diff --git a/src/Lidarr.Api.V1/Lidarr.Api.V1.csproj b/src/Lidarr.Api.V1/Lidarr.Api.V1.csproj
index 5d440394e..fbd225681 100644
--- a/src/Lidarr.Api.V1/Lidarr.Api.V1.csproj
+++ b/src/Lidarr.Api.V1/Lidarr.Api.V1.csproj
@@ -3,7 +3,6 @@
net462;netcoreapp3.1
-
diff --git a/src/NzbDrone.Core.Test/Datastore/BasicRepositoryFixture.cs b/src/NzbDrone.Core.Test/Datastore/BasicRepositoryFixture.cs
index 68f7d9fb5..0740fa7ca 100644
--- a/src/NzbDrone.Core.Test/Datastore/BasicRepositoryFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/BasicRepositoryFixture.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using System.Linq;
using FizzWare.NBuilder;
using FluentAssertions;
@@ -10,34 +11,230 @@ using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.Datastore
{
[TestFixture]
- public class
- BasicRepositoryFixture : DbTest, ScheduledTask>
+ public class BasicRepositoryFixture : DbTest, ScheduledTask>
{
- private ScheduledTask _basicType;
+ private List _basicList;
[SetUp]
public void Setup()
{
- _basicType = Builder
- .CreateNew()
- .With(c => c.Id = 0)
- .With(c => c.LastExecution = DateTime.UtcNow)
- .Build();
+ _basicList = Builder
+ .CreateListOfSize(5)
+ .All()
+ .With(x => x.Id = 0)
+ .BuildList();
}
[Test]
- public void should_be_able_to_add()
+ public void should_be_able_to_insert()
{
- Subject.Insert(_basicType);
+ Subject.Insert(_basicList[0]);
Subject.All().Should().HaveCount(1);
}
+ [Test]
+ public void should_be_able_to_insert_many()
+ {
+ Subject.InsertMany(_basicList);
+ Subject.All().Should().HaveCount(5);
+ }
+
+ [Test]
+ public void insert_many_should_throw_if_id_not_zero()
+ {
+ _basicList[1].Id = 999;
+ Assert.Throws(() => Subject.InsertMany(_basicList));
+ }
+
+ [Test]
+ public void should_be_able_to_get_count()
+ {
+ Subject.InsertMany(_basicList);
+ Subject.Count().Should().Be(_basicList.Count);
+ }
+
+ [Test]
+ public void should_be_able_to_find_by_id()
+ {
+ Subject.InsertMany(_basicList);
+ var storeObject = Subject.Get(_basicList[1].Id);
+
+ storeObject.Should().BeEquivalentTo(_basicList[1], o => o.IncludingAllRuntimeProperties());
+ }
+
+ [Test]
+ public void should_be_able_to_update()
+ {
+ Subject.InsertMany(_basicList);
+
+ var item = _basicList[1];
+ item.Interval = 999;
+
+ Subject.Update(item);
+
+ Subject.All().Should().BeEquivalentTo(_basicList);
+ }
+
+ [Test]
+ public void should_be_able_to_upsert_new()
+ {
+ Subject.Upsert(_basicList[0]);
+ Subject.All().Should().HaveCount(1);
+ }
+
+ [Test]
+ public void should_be_able_to_upsert_existing()
+ {
+ Subject.InsertMany(_basicList);
+
+ var item = _basicList[1];
+ item.Interval = 999;
+
+ Subject.Upsert(item);
+
+ Subject.All().Should().BeEquivalentTo(_basicList);
+ }
+
+ [Test]
+ public void should_be_able_to_update_single_field()
+ {
+ Subject.InsertMany(_basicList);
+
+ var item = _basicList[1];
+ var executionBackup = item.LastExecution;
+ item.Interval = 999;
+ item.LastExecution = DateTime.UtcNow;
+
+ Subject.SetFields(item, x => x.Interval);
+
+ item.LastExecution = executionBackup;
+ Subject.All().Should().BeEquivalentTo(_basicList);
+ }
+
+ [Test]
+ public void set_fields_should_throw_if_id_zero()
+ {
+ Subject.InsertMany(_basicList);
+ _basicList[1].Id = 0;
+ _basicList[1].LastExecution = DateTime.UtcNow;
+
+ Assert.Throws(() => Subject.SetFields(_basicList[1], x => x.Interval));
+ }
+
+ [Test]
+ public void should_be_able_to_delete_model_by_id()
+ {
+ Subject.InsertMany(_basicList);
+ Subject.All().Should().HaveCount(5);
+
+ Subject.Delete(_basicList[0].Id);
+ Subject.All().Select(x => x.Id).Should().BeEquivalentTo(_basicList.Skip(1).Select(x => x.Id));
+ }
+
+ [Test]
+ public void should_be_able_to_delete_model_by_object()
+ {
+ Subject.InsertMany(_basicList);
+ Subject.All().Should().HaveCount(5);
+
+ Subject.Delete(_basicList[0]);
+ Subject.All().Select(x => x.Id).Should().BeEquivalentTo(_basicList.Skip(1).Select(x => x.Id));
+ }
+
+ [Test]
+ public void get_many_should_return_empty_list_if_no_ids()
+ {
+ Subject.Get(new List()).Should().BeEquivalentTo(new List());
+ }
+
+ [Test]
+ public void get_many_should_throw_if_not_all_found()
+ {
+ Subject.InsertMany(_basicList);
+ Assert.Throws(() => Subject.Get(new[] { 999 }));
+ }
+
+ [Test]
+ public void should_be_able_to_find_by_multiple_id()
+ {
+ Subject.InsertMany(_basicList);
+ var storeObject = Subject.Get(_basicList.Take(2).Select(x => x.Id));
+ storeObject.Select(x => x.Id).Should().BeEquivalentTo(_basicList.Take(2).Select(x => x.Id));
+ }
+
+ [Test]
+ public void should_be_able_to_update_many()
+ {
+ Subject.InsertMany(_basicList);
+ _basicList.ForEach(x => x.Interval = 999);
+
+ Subject.UpdateMany(_basicList);
+ Subject.All().Should().BeEquivalentTo(_basicList);
+ }
+
+ [Test]
+ public void update_many_should_throw_if_id_zero()
+ {
+ Subject.InsertMany(_basicList);
+ _basicList[1].Id = 0;
+ Assert.Throws(() => Subject.UpdateMany(_basicList));
+ }
+
+ [Test]
+ public void should_be_able_to_update_many_single_field()
+ {
+ Subject.InsertMany(_basicList);
+
+ var executionBackup = _basicList.Select(x => x.LastExecution).ToList();
+ _basicList.ForEach(x => x.Interval = 999);
+ _basicList.ForEach(x => x.LastExecution = DateTime.UtcNow);
+
+ Subject.SetFields(_basicList, x => x.Interval);
+
+ for (int i = 0; i < _basicList.Count; i++)
+ {
+ _basicList[i].LastExecution = executionBackup[i];
+ }
+
+ Subject.All().Should().BeEquivalentTo(_basicList);
+ }
+
+ [Test]
+ public void set_fields_should_throw_if_any_id_zero()
+ {
+ Subject.InsertMany(_basicList);
+ _basicList.ForEach(x => x.Interval = 999);
+ _basicList[1].Id = 0;
+
+ Assert.Throws(() => Subject.SetFields(_basicList, x => x.Interval));
+ }
+
+ [Test]
+ public void should_be_able_to_delete_many_by_model()
+ {
+ Subject.InsertMany(_basicList);
+ Subject.All().Should().HaveCount(5);
+
+ Subject.DeleteMany(_basicList.Take(2).ToList());
+ Subject.All().Select(x => x.Id).Should().BeEquivalentTo(_basicList.Skip(2).Select(x => x.Id));
+ }
+
+ [Test]
+ public void should_be_able_to_delete_many_by_id()
+ {
+ Subject.InsertMany(_basicList);
+ Subject.All().Should().HaveCount(5);
+
+ Subject.DeleteMany(_basicList.Take(2).Select(x => x.Id).ToList());
+ Subject.All().Select(x => x.Id).Should().BeEquivalentTo(_basicList.Skip(2).Select(x => x.Id));
+ }
+
[Test]
public void purge_should_delete_all()
{
- Subject.InsertMany(Builder.CreateListOfSize(10).BuildListOfNew());
+ Subject.InsertMany(_basicList);
- AllStoredModels.Should().HaveCount(10);
+ AllStoredModels.Should().HaveCount(5);
Subject.Purge();
@@ -45,29 +242,29 @@ namespace NzbDrone.Core.Test.Datastore
}
[Test]
- public void should_be_able_to_delete_model()
+ public void has_items_should_return_false_with_no_items()
{
- Subject.Insert(_basicType);
- Subject.All().Should().HaveCount(1);
-
- Subject.Delete(_basicType.Id);
- Subject.All().Should().BeEmpty();
+ Subject.HasItems().Should().BeFalse();
}
[Test]
- public void should_be_able_to_find_by_id()
+ public void has_items_should_return_true_with_items()
{
- Subject.Insert(_basicType);
- var storeObject = Subject.Get(_basicType.Id);
+ Subject.InsertMany(_basicList);
+ Subject.HasItems().Should().BeTrue();
+ }
- storeObject.Should().BeEquivalentTo(_basicType, o => o.IncludingAllRuntimeProperties());
+ [Test]
+ public void single_should_throw_on_empty()
+ {
+ Assert.Throws(() => Subject.Single());
}
[Test]
public void should_be_able_to_get_single()
{
- Subject.Insert(_basicType);
- Subject.SingleOrDefault().Should().NotBeNull();
+ Subject.Insert(_basicList[0]);
+ Subject.Single().Should().BeEquivalentTo(_basicList[0]);
}
[Test]
@@ -89,9 +286,21 @@ namespace NzbDrone.Core.Test.Datastore
}
[Test]
- public void should_be_able_to_call_ToList_on_empty_quariable()
+ public void should_be_able_to_call_ToList_on_empty_queryable()
{
Subject.All().ToList().Should().BeEmpty();
}
+
+ [Test]
+ public void get_paged_should_work()
+ {
+ Subject.InsertMany(_basicList);
+ var data = Subject.GetPaged(new PagingSpec() { Page = 0, PageSize = 2, SortKey = "LastExecution", SortDirection = SortDirection.Descending });
+
+ data.Page.Should().Be(0);
+ data.PageSize.Should().Be(2);
+ data.TotalRecords.Should().Be(_basicList.Count);
+ data.Records.Should().BeEquivalentTo(_basicList.OrderByDescending(x => x.LastExecution).Take(2));
+ }
}
}
diff --git a/src/NzbDrone.Core.Test/Datastore/Converters/BooleanIntConverterFixture.cs b/src/NzbDrone.Core.Test/Datastore/Converters/BooleanIntConverterFixture.cs
deleted file mode 100644
index 50e1b892b..000000000
--- a/src/NzbDrone.Core.Test/Datastore/Converters/BooleanIntConverterFixture.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-using System;
-using FluentAssertions;
-using Marr.Data.Converters;
-using NUnit.Framework;
-using NzbDrone.Core.Test.Framework;
-
-namespace NzbDrone.Core.Test.Datastore.Converters
-{
- [TestFixture]
- public class BooleanIntConverterFixture : CoreTest
- {
- [TestCase(true, 1)]
- [TestCase(false, 0)]
- public void should_return_int_when_saving_boolean_to_db(bool input, int expected)
- {
- Subject.ToDB(input).Should().Be(expected);
- }
-
- [Test]
- public void should_return_db_null_for_null_value_when_saving_to_db()
- {
- Subject.ToDB(null).Should().Be(DBNull.Value);
- }
-
- [TestCase(1, true)]
- [TestCase(0, false)]
- public void should_return_bool_when_getting_int_from_db(int input, bool expected)
- {
- var context = new ConverterContext
- {
- DbValue = (long)input
- };
-
- Subject.FromDB(context).Should().Be(expected);
- }
-
- [Test]
- public void should_return_db_null_for_null_value_when_getting_from_db()
- {
- var context = new ConverterContext
- {
- DbValue = DBNull.Value
- };
-
- Subject.FromDB(context).Should().Be(DBNull.Value);
- }
-
- [Test]
- public void should_throw_for_non_boolean_equivalent_number_value_when_getting_from_db()
- {
- var context = new ConverterContext
- {
- DbValue = 2L
- };
-
- Assert.Throws(() => Subject.FromDB(context));
- }
- }
-}
diff --git a/src/NzbDrone.Core.Test/Datastore/Converters/CommandConverterFixture.cs b/src/NzbDrone.Core.Test/Datastore/Converters/CommandConverterFixture.cs
index 127116c33..e358b642c 100644
--- a/src/NzbDrone.Core.Test/Datastore/Converters/CommandConverterFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Converters/CommandConverterFixture.cs
@@ -1,10 +1,8 @@
-using System;
using System.Data;
+using System.Data.SQLite;
using FluentAssertions;
-using Marr.Data.Converters;
using Moq;
using NUnit.Framework;
-using NzbDrone.Common.Serializer;
using NzbDrone.Core.Datastore.Converters;
using NzbDrone.Core.Messaging.Commands;
using NzbDrone.Core.Music.Commands;
@@ -15,67 +13,50 @@ namespace NzbDrone.Core.Test.Datastore.Converters
[TestFixture]
public class CommandConverterFixture : CoreTest
{
+ private SQLiteParameter _param;
+
+ [SetUp]
+ public void Setup()
+ {
+ _param = new SQLiteParameter();
+ }
+
[Test]
public void should_return_json_string_when_saving_boolean_to_db()
{
var command = new RefreshArtistCommand();
- Subject.ToDB(command).Should().BeOfType();
+ Subject.SetValue(_param, command);
+ _param.Value.Should().BeOfType();
}
[Test]
public void should_return_null_for_null_value_when_saving_to_db()
{
- Subject.ToDB(null).Should().Be(null);
- }
-
- [Test]
- public void should_return_db_null_for_db_null_value_when_saving_to_db()
- {
- Subject.ToDB(DBNull.Value).Should().Be(DBNull.Value);
+ Subject.SetValue(_param, null);
+ _param.Value.Should().BeNull();
}
[Test]
public void should_return_command_when_getting_json_from_db()
{
- var dataRecordMock = new Mock();
- dataRecordMock.Setup(s => s.GetOrdinal("Name")).Returns(0);
- dataRecordMock.Setup(s => s.GetString(0)).Returns("RefreshArtist");
+ var data = "{\"name\": \"RefreshArtist\"}";
- var context = new ConverterContext
- {
- DataRecord = dataRecordMock.Object,
- DbValue = new RefreshArtistCommand().ToJson()
- };
-
- Subject.FromDB(context).Should().BeOfType();
+ Subject.Parse(data).Should().BeOfType();
}
[Test]
public void should_return_unknown_command_when_getting_json_from_db()
{
- var dataRecordMock = new Mock();
- dataRecordMock.Setup(s => s.GetOrdinal("Name")).Returns(0);
- dataRecordMock.Setup(s => s.GetString(0)).Returns("MockRemovedCommand");
+ var data = "{\"name\": \"EnsureMediaCovers\"}";
- var context = new ConverterContext
- {
- DataRecord = dataRecordMock.Object,
- DbValue = new RefreshArtistCommand(2).ToJson()
- };
-
- Subject.FromDB(context).Should().BeOfType();
+ Subject.Parse(data).Should().BeOfType();
}
[Test]
public void should_return_null_for_null_value_when_getting_from_db()
{
- var context = new ConverterContext
- {
- DbValue = DBNull.Value
- };
-
- Subject.FromDB(context).Should().Be(null);
+ Subject.Parse(null).Should().BeNull();
}
}
}
diff --git a/src/NzbDrone.Core.Test/Datastore/Converters/DictionaryConverterFixture.cs b/src/NzbDrone.Core.Test/Datastore/Converters/DictionaryConverterFixture.cs
new file mode 100644
index 000000000..43144308e
--- /dev/null
+++ b/src/NzbDrone.Core.Test/Datastore/Converters/DictionaryConverterFixture.cs
@@ -0,0 +1,41 @@
+using System.Collections.Generic;
+using System.Data.SQLite;
+using FluentAssertions;
+using NUnit.Framework;
+using NzbDrone.Core.Datastore.Converters;
+using NzbDrone.Core.Test.Framework;
+
+namespace NzbDrone.Core.Test.Datastore.Converters
+{
+ [TestFixture]
+ public class DictionaryConverterFixture : CoreTest>>
+ {
+ private SQLiteParameter _param;
+
+ [SetUp]
+ public void Setup()
+ {
+ _param = new SQLiteParameter();
+ }
+
+ [Test]
+ public void should_serialize_in_camel_case()
+ {
+ var dict = new Dictionary
+ {
+ { "Data", "Should be lowercased" },
+ { "CamelCase", "Should be cameled" }
+ };
+
+ Subject.SetValue(_param, dict);
+
+ var result = (string)_param.Value;
+
+ result.Should().Contain("data");
+ result.Should().NotContain("Data");
+
+ result.Should().Contain("camelCase");
+ result.Should().NotContain("CamelCase");
+ }
+ }
+}
diff --git a/src/NzbDrone.Core.Test/Datastore/Converters/DoubleConverterFixture.cs b/src/NzbDrone.Core.Test/Datastore/Converters/DoubleConverterFixture.cs
deleted file mode 100644
index 1b5c09c7a..000000000
--- a/src/NzbDrone.Core.Test/Datastore/Converters/DoubleConverterFixture.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-using System;
-using FluentAssertions;
-using Marr.Data.Converters;
-using NUnit.Framework;
-using NzbDrone.Core.Datastore.Converters;
-using NzbDrone.Core.Test.Framework;
-
-namespace NzbDrone.Core.Test.Datastore.Converters
-{
- [TestFixture]
- public class DoubleConverterFixture : CoreTest
- {
- [Test]
- public void should_return_double_when_saving_double_to_db()
- {
- var input = 10.5D;
-
- Subject.ToDB(input).Should().Be(input);
- }
-
- [Test]
- public void should_return_null_for_null_value_when_saving_to_db()
- {
- Subject.ToDB(null).Should().Be(null);
- }
-
- [Test]
- public void should_return_db_null_for_db_null_value_when_saving_to_db()
- {
- Subject.ToDB(DBNull.Value).Should().Be(DBNull.Value);
- }
-
- [Test]
- public void should_return_double_when_getting_double_from_db()
- {
- var expected = 10.5D;
-
- var context = new ConverterContext
- {
- DbValue = expected
- };
-
- Subject.FromDB(context).Should().Be(expected);
- }
-
- [Test]
- public void should_return_double_when_getting_string_from_db()
- {
- var expected = 10.5D;
-
- var context = new ConverterContext
- {
- DbValue = $"{expected}"
- };
-
- Subject.FromDB(context).Should().Be(expected);
- }
-
- [Test]
- public void should_return_null_for_null_value_when_getting_from_db()
- {
- var context = new ConverterContext
- {
- DbValue = DBNull.Value
- };
-
- Subject.FromDB(context).Should().Be(DBNull.Value);
- }
- }
-}
diff --git a/src/NzbDrone.Core.Test/Datastore/Converters/EnumIntConverterFixture.cs b/src/NzbDrone.Core.Test/Datastore/Converters/EnumIntConverterFixture.cs
deleted file mode 100644
index 8f9a23412..000000000
--- a/src/NzbDrone.Core.Test/Datastore/Converters/EnumIntConverterFixture.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-using System;
-using System.Reflection;
-using FluentAssertions;
-using Marr.Data.Converters;
-using Marr.Data.Mapping;
-using Moq;
-using NUnit.Framework;
-using NzbDrone.Core.Music;
-using NzbDrone.Core.Test.Framework;
-
-namespace NzbDrone.Core.Test.Datastore.Converters
-{
- [TestFixture]
- public class EnumIntConverterFixture : CoreTest
- {
- [Test]
- public void should_return_int_when_saving_enum_to_db()
- {
- Subject.ToDB(ArtistStatusType.Continuing).Should().Be((int)ArtistStatusType.Continuing);
- }
-
- [Test]
- public void should_return_db_null_for_null_value_when_saving_to_db()
- {
- Subject.ToDB(null).Should().Be(DBNull.Value);
- }
-
- [Test]
- public void should_return_enum_when_getting_int_from_db()
- {
- var mockMemberInfo = new Mock();
- mockMemberInfo.SetupGet(s => s.DeclaringType).Returns(typeof(ArtistMetadata));
- mockMemberInfo.SetupGet(s => s.Name).Returns("Status");
-
- var expected = ArtistStatusType.Continuing;
-
- var context = new ConverterContext
- {
- ColumnMap = new ColumnMap(mockMemberInfo.Object) { FieldType = typeof(ArtistStatusType) },
- DbValue = (long)expected
- };
-
- Subject.FromDB(context).Should().Be(expected);
- }
-
- [Test]
- public void should_return_null_for_null_value_when_getting_from_db()
- {
- var context = new ConverterContext
- {
- DbValue = DBNull.Value
- };
-
- Subject.FromDB(context).Should().Be(null);
- }
- }
-}
diff --git a/src/NzbDrone.Core.Test/Datastore/Converters/GuidConverterFixture.cs b/src/NzbDrone.Core.Test/Datastore/Converters/GuidConverterFixture.cs
index 2d4a8e530..2bf9ea3eb 100644
--- a/src/NzbDrone.Core.Test/Datastore/Converters/GuidConverterFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Converters/GuidConverterFixture.cs
@@ -1,6 +1,6 @@
using System;
+using System.Data.SQLite;
using FluentAssertions;
-using Marr.Data.Converters;
using NUnit.Framework;
using NzbDrone.Core.Datastore.Converters;
using NzbDrone.Core.Test.Framework;
@@ -10,18 +10,21 @@ namespace NzbDrone.Core.Test.Datastore.Converters
[TestFixture]
public class GuidConverterFixture : CoreTest
{
+ private SQLiteParameter _param;
+
+ [SetUp]
+ public void Setup()
+ {
+ _param = new SQLiteParameter();
+ }
+
[Test]
public void should_return_string_when_saving_guid_to_db()
{
var guid = Guid.NewGuid();
- Subject.ToDB(guid).Should().Be(guid.ToString());
- }
-
- [Test]
- public void should_return_db_null_for_null_value_when_saving_to_db()
- {
- Subject.ToDB(null).Should().Be(DBNull.Value);
+ Subject.SetValue(_param, guid);
+ _param.Value.Should().Be(guid.ToString());
}
[Test]
@@ -29,23 +32,13 @@ namespace NzbDrone.Core.Test.Datastore.Converters
{
var guid = Guid.NewGuid();
- var context = new ConverterContext
- {
- DbValue = guid.ToString()
- };
-
- Subject.FromDB(context).Should().Be(guid);
+ Subject.Parse(guid.ToString()).Should().Be(guid);
}
[Test]
public void should_return_empty_guid_for_db_null_value_when_getting_from_db()
{
- var context = new ConverterContext
- {
- DbValue = DBNull.Value
- };
-
- Subject.FromDB(context).Should().Be(Guid.Empty);
+ Subject.Parse(null).Should().Be(Guid.Empty);
}
}
}
diff --git a/src/NzbDrone.Core.Test/Datastore/Converters/Int32ConverterFixture.cs b/src/NzbDrone.Core.Test/Datastore/Converters/Int32ConverterFixture.cs
deleted file mode 100644
index db873b76c..000000000
--- a/src/NzbDrone.Core.Test/Datastore/Converters/Int32ConverterFixture.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using System;
-using FluentAssertions;
-using Marr.Data.Converters;
-using NUnit.Framework;
-using NzbDrone.Core.Datastore.Converters;
-using NzbDrone.Core.Test.Framework;
-
-namespace NzbDrone.Core.Test.Datastore.Converters
-{
- [TestFixture]
- public class Int32ConverterFixture : CoreTest
- {
- [Test]
- public void should_return_int_when_saving_int_to_db()
- {
- Subject.ToDB(5).Should().Be(5);
- }
-
- [Test]
- public void should_return_int_when_getting_int_from_db()
- {
- var i = 5;
-
- var context = new ConverterContext
- {
- DbValue = i
- };
-
- Subject.FromDB(context).Should().Be(i);
- }
-
- [Test]
- public void should_return_int_when_getting_string_from_db()
- {
- var i = 5;
-
- var context = new ConverterContext
- {
- DbValue = i.ToString()
- };
-
- Subject.FromDB(context).Should().Be(i);
- }
-
- [Test]
- public void should_return_db_null_for_db_null_value_when_getting_from_db()
- {
- var context = new ConverterContext
- {
- DbValue = DBNull.Value
- };
-
- Subject.FromDB(context).Should().Be(DBNull.Value);
- }
- }
-}
diff --git a/src/NzbDrone.Core.Test/Datastore/Converters/OsPathConverterFixture.cs b/src/NzbDrone.Core.Test/Datastore/Converters/OsPathConverterFixture.cs
index 815430323..66688b540 100644
--- a/src/NzbDrone.Core.Test/Datastore/Converters/OsPathConverterFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Converters/OsPathConverterFixture.cs
@@ -1,6 +1,5 @@
-using System;
+using System.Data.SQLite;
using FluentAssertions;
-using Marr.Data.Converters;
using NUnit.Framework;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Datastore.Converters;
@@ -12,38 +11,37 @@ namespace NzbDrone.Core.Test.Datastore.Converters
[TestFixture]
public class OsPathConverterFixture : CoreTest
{
+ private SQLiteParameter _param;
+
+ [SetUp]
+ public void Setup()
+ {
+ _param = new SQLiteParameter();
+ }
+
[Test]
public void should_return_string_when_saving_os_path_to_db()
{
- var path = @"C:\Test\Music".AsOsAgnostic();
+ var path = @"C:\Test\TV".AsOsAgnostic();
var osPath = new OsPath(path);
- Subject.ToDB(osPath).Should().Be(path);
+ Subject.SetValue(_param, osPath);
+ _param.Value.Should().Be(path);
}
[Test]
public void should_return_os_path_when_getting_string_from_db()
{
- var path = @"C:\Test\Music".AsOsAgnostic();
+ var path = @"C:\Test\TV".AsOsAgnostic();
var osPath = new OsPath(path);
- var context = new ConverterContext
- {
- DbValue = path
- };
-
- Subject.FromDB(context).Should().Be(osPath);
+ Subject.Parse(path).Should().Be(osPath);
}
[Test]
- public void should_return_db_null_for_db_null_value_when_getting_from_db()
+ public void should_return_empty_for_null_value_when_getting_from_db()
{
- var context = new ConverterContext
- {
- DbValue = DBNull.Value
- };
-
- Subject.FromDB(context).Should().Be(DBNull.Value);
+ Subject.Parse(null).IsEmpty.Should().BeTrue();
}
}
}
diff --git a/src/NzbDrone.Core.Test/Datastore/Converters/ProviderSettingConverterFixture.cs b/src/NzbDrone.Core.Test/Datastore/Converters/ProviderSettingConverterFixture.cs
index c36758be2..67a29c14a 100644
--- a/src/NzbDrone.Core.Test/Datastore/Converters/ProviderSettingConverterFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Converters/ProviderSettingConverterFixture.cs
@@ -1,6 +1,5 @@
-using System;
+using System.Data.SQLite;
using FluentAssertions;
-using Marr.Data.Converters;
using NUnit.Framework;
using NzbDrone.Core.Datastore.Converters;
using NzbDrone.Core.Test.Framework;
@@ -8,30 +7,29 @@ using NzbDrone.Core.ThingiProvider;
namespace NzbDrone.Core.Test.Datastore.Converters
{
+ [Ignore("To reinstate once dapper changes worked out")]
[TestFixture]
public class ProviderSettingConverterFixture : CoreTest
{
+ private SQLiteParameter _param;
+
+ [SetUp]
+ public void Setup()
+ {
+ _param = new SQLiteParameter();
+ }
+
[Test]
public void should_return_null_config_if_config_is_null()
{
- var result = Subject.FromDB(new ConverterContext()
- {
- DbValue = DBNull.Value
- });
-
- result.Should().Be(NullConfig.Instance);
+ Subject.Parse(null).Should().Be(NullConfig.Instance);
}
[TestCase(null)]
[TestCase("")]
public void should_return_null_config_if_config_is_empty(object dbValue)
{
- var result = Subject.FromDB(new ConverterContext()
- {
- DbValue = dbValue
- });
-
- result.Should().Be(NullConfig.Instance);
+ Subject.Parse(dbValue).Should().Be(NullConfig.Instance);
}
}
}
diff --git a/src/NzbDrone.Core.Test/Datastore/Converters/QualityIntConverterFixture.cs b/src/NzbDrone.Core.Test/Datastore/Converters/QualityIntConverterFixture.cs
index ea1a24d78..73d12d09a 100644
--- a/src/NzbDrone.Core.Test/Datastore/Converters/QualityIntConverterFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Converters/QualityIntConverterFixture.cs
@@ -1,6 +1,5 @@
-using System;
+using System.Data.SQLite;
using FluentAssertions;
-using Marr.Data.Converters;
using NUnit.Framework;
using NzbDrone.Core.Datastore.Converters;
using NzbDrone.Core.Qualities;
@@ -9,26 +8,30 @@ using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.Datastore.Converters
{
[TestFixture]
- public class QualityIntConverterFixture : CoreTest
+ public class QualityIntConverterFixture : CoreTest
{
+ private SQLiteParameter _param;
+
+ [SetUp]
+ public void Setup()
+ {
+ _param = new SQLiteParameter();
+ }
+
[Test]
public void should_return_int_when_saving_quality_to_db()
{
var quality = Quality.FLAC;
- Subject.ToDB(quality).Should().Be(quality.Id);
+ Subject.SetValue(_param, quality);
+ _param.Value.Should().Be(quality.Id);
}
[Test]
public void should_return_0_when_saving_db_null_to_db()
{
- Subject.ToDB(DBNull.Value).Should().Be(0);
- }
-
- [Test]
- public void should_throw_when_saving_another_object_to_db()
- {
- Assert.Throws(() => Subject.ToDB("Not a quality"));
+ Subject.SetValue(_param, null);
+ _param.Value.Should().Be(0);
}
[Test]
@@ -36,23 +39,13 @@ namespace NzbDrone.Core.Test.Datastore.Converters
{
var quality = Quality.FLAC;
- var context = new ConverterContext
- {
- DbValue = quality.Id
- };
-
- Subject.FromDB(context).Should().Be(quality);
+ Subject.Parse(quality.Id).Should().Be(quality);
}
[Test]
- public void should_return_db_null_for_db_null_value_when_getting_from_db()
+ public void should_return_unknown_for_null_value_when_getting_from_db()
{
- var context = new ConverterContext
- {
- DbValue = DBNull.Value
- };
-
- Subject.FromDB(context).Should().Be(Quality.Unknown);
+ Subject.Parse(null).Should().Be(Quality.Unknown);
}
}
}
diff --git a/src/NzbDrone.Core.Test/Datastore/Converters/TimeSpanConverterFixture.cs b/src/NzbDrone.Core.Test/Datastore/Converters/TimeSpanConverterFixture.cs
deleted file mode 100644
index a590bbe62..000000000
--- a/src/NzbDrone.Core.Test/Datastore/Converters/TimeSpanConverterFixture.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-using System;
-using System.Globalization;
-using FluentAssertions;
-using Marr.Data.Converters;
-using NUnit.Framework;
-using NzbDrone.Core.Datastore.Converters;
-using NzbDrone.Core.Test.Framework;
-
-namespace NzbDrone.Core.Test.Datastore.Converters
-{
- [TestFixture]
- public class TimeSpanConverterFixture : CoreTest
- {
- [Test]
- public void should_return_string_when_saving_timespan_to_db()
- {
- var timeSpan = TimeSpan.FromMinutes(5);
-
- Subject.ToDB(timeSpan).Should().Be(timeSpan.ToString("c", CultureInfo.InvariantCulture));
- }
-
- [Test]
- public void should_return_null_when_saving_empty_string_to_db()
- {
- Subject.ToDB("").Should().Be(null);
- }
-
- [Test]
- public void should_return_time_span_when_getting_time_span_from_db()
- {
- var timeSpan = TimeSpan.FromMinutes(5);
-
- var context = new ConverterContext
- {
- DbValue = timeSpan
- };
-
- Subject.FromDB(context).Should().Be(timeSpan);
- }
-
- [Test]
- public void should_return_time_span_when_getting_string_from_db()
- {
- var timeSpan = TimeSpan.FromMinutes(5);
-
- var context = new ConverterContext
- {
- DbValue = timeSpan.ToString("c", CultureInfo.InvariantCulture)
- };
-
- Subject.FromDB(context).Should().Be(timeSpan);
- }
-
- [Test]
- public void should_return_time_span_zero_for_db_null_value_when_getting_from_db()
- {
- var context = new ConverterContext
- {
- DbValue = DBNull.Value
- };
-
- Subject.FromDB(context).Should().Be(TimeSpan.Zero);
- }
- }
-}
diff --git a/src/NzbDrone.Core.Test/Datastore/Converters/UtcConverterFixture.cs b/src/NzbDrone.Core.Test/Datastore/Converters/UtcConverterFixture.cs
index 51c07a1b3..61b2697ce 100644
--- a/src/NzbDrone.Core.Test/Datastore/Converters/UtcConverterFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/Converters/UtcConverterFixture.cs
@@ -1,6 +1,6 @@
using System;
+using System.Data.SQLite;
using FluentAssertions;
-using Marr.Data.Converters;
using NUnit.Framework;
using NzbDrone.Core.Datastore.Converters;
using NzbDrone.Core.Test.Framework;
@@ -8,20 +8,23 @@ using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.Datastore.Converters
{
[TestFixture]
- public class UtcConverterFixture : CoreTest
+ public class UtcConverterFixture : CoreTest
{
+ private SQLiteParameter _param;
+
+ [SetUp]
+ public void Setup()
+ {
+ _param = new SQLiteParameter();
+ }
+
[Test]
public void should_return_date_time_when_saving_date_time_to_db()
{
var dateTime = DateTime.Now;
- Subject.ToDB(dateTime).Should().Be(dateTime.ToUniversalTime());
- }
-
- [Test]
- public void should_return_db_null_when_saving_db_null_to_db()
- {
- Subject.ToDB(DBNull.Value).Should().Be(DBNull.Value);
+ Subject.SetValue(_param, dateTime);
+ _param.Value.Should().Be(dateTime.ToUniversalTime());
}
[Test]
@@ -29,23 +32,7 @@ namespace NzbDrone.Core.Test.Datastore.Converters
{
var dateTime = DateTime.Now.ToUniversalTime();
- var context = new ConverterContext
- {
- DbValue = dateTime
- };
-
- Subject.FromDB(context).Should().Be(dateTime);
- }
-
- [Test]
- public void should_return_db_null_for_db_null_value_when_getting_from_db()
- {
- var context = new ConverterContext
- {
- DbValue = DBNull.Value
- };
-
- Subject.FromDB(context).Should().Be(DBNull.Value);
+ Subject.Parse(dateTime).Should().Be(dateTime);
}
}
}
diff --git a/src/NzbDrone.Core.Test/Datastore/DatabaseFixture.cs b/src/NzbDrone.Core.Test/Datastore/DatabaseFixture.cs
index b4dd4aefa..807057837 100644
--- a/src/NzbDrone.Core.Test/Datastore/DatabaseFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/DatabaseFixture.cs
@@ -1,5 +1,6 @@
using System;
using System.Linq;
+using Dapper;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Datastore;
@@ -14,14 +15,14 @@ namespace NzbDrone.Core.Test.Datastore
public void SingleOrDefault_should_return_null_on_empty_db()
{
Mocker.Resolve()
- .GetDataMapper().Query()
+ .OpenConnection().Query("SELECT * FROM Artists")
.SingleOrDefault(c => c.CleanName == "SomeTitle")
.Should()
.BeNull();
}
[Test]
- public void vaccume()
+ public void vacuum()
{
Mocker.Resolve().Vacuum();
}
diff --git a/src/NzbDrone.Core.Test/Datastore/MarrDataLazyLoadingFixture.cs b/src/NzbDrone.Core.Test/Datastore/LazyLoadingFixture.cs
similarity index 52%
rename from src/NzbDrone.Core.Test/Datastore/MarrDataLazyLoadingFixture.cs
rename to src/NzbDrone.Core.Test/Datastore/LazyLoadingFixture.cs
index 29ed98e2e..5241eefcd 100644
--- a/src/NzbDrone.Core.Test/Datastore/MarrDataLazyLoadingFixture.cs
+++ b/src/NzbDrone.Core.Test/Datastore/LazyLoadingFixture.cs
@@ -1,7 +1,7 @@
using System.Collections.Generic;
using System.Linq;
+using Dapper;
using FizzWare.NBuilder;
-using Marr.Data.QGen;
using NUnit.Framework;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.MediaFiles;
@@ -13,11 +13,13 @@ using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.Datastore
{
[TestFixture]
- public class MarrDataLazyLoadingFixture : DbTest
+ public class LazyLoadingFixture : DbTest
{
[SetUp]
public void Setup()
{
+ SqlBuilderExtensions.LogSql = true;
+
var profile = new QualityProfile
{
Name = "Test",
@@ -81,69 +83,12 @@ namespace NzbDrone.Core.Test.Datastore
Db.InsertMany(tracks);
}
- [Test]
- public void should_join_artist_when_query_for_albums()
- {
- var db = Mocker.Resolve();
- var dataMapper = db.GetDataMapper();
-
- var albums = dataMapper.Query()
- .Join(JoinType.Inner, v => v.Artist, (l, r) => l.ArtistMetadataId == r.ArtistMetadataId)
- .ToList();
-
- foreach (var album in albums)
- {
- Assert.IsNotNull(album.Artist);
- }
- }
-
- [Test]
- public void should_lazy_load_profile_if_not_joined()
- {
- var db = Mocker.Resolve();
- var dataMapper = db.GetDataMapper();
-
- var tracks = dataMapper.Query