mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-19 21:13:28 -07:00
New: Added tests for DB Converters
This commit is contained in:
parent
b5cd240cc7
commit
74f433d4f0
17 changed files with 679 additions and 36 deletions
|
@ -0,0 +1,59 @@
|
||||||
|
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<Core.Datastore.Converters.BooleanIntConverter>
|
||||||
|
{
|
||||||
|
[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 = (long)2
|
||||||
|
};
|
||||||
|
|
||||||
|
Assert.Throws<ConversionException>(() => Subject.FromDB(context));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,64 @@
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using FluentAssertions;
|
||||||
|
using Marr.Data.Converters;
|
||||||
|
using Moq;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using NzbDrone.Common.Serializer;
|
||||||
|
using NzbDrone.Core.Datastore.Converters;
|
||||||
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
using NzbDrone.Core.Music.Commands;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Test.Datastore.Converters
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class CommandConverterFixture : CoreTest<CommandConverter>
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void should_return_json_string_when_saving_boolean_to_db()
|
||||||
|
{
|
||||||
|
var command = new RefreshArtistCommand();
|
||||||
|
|
||||||
|
Subject.ToDB(command).Should().BeOfType<string>();
|
||||||
|
}
|
||||||
|
|
||||||
|
[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_command_when_getting_json_from_db()
|
||||||
|
{
|
||||||
|
var dataRecordMock = new Mock<IDataRecord>();
|
||||||
|
dataRecordMock.Setup(s => s.GetOrdinal("Name")).Returns(0);
|
||||||
|
dataRecordMock.Setup(s => s.GetString(0)).Returns("RefreshArtist");
|
||||||
|
|
||||||
|
var context = new ConverterContext
|
||||||
|
{
|
||||||
|
DataRecord = dataRecordMock.Object,
|
||||||
|
DbValue = new RefreshArtistCommand().ToJson()
|
||||||
|
};
|
||||||
|
|
||||||
|
Subject.FromDB(context).Should().BeOfType<RefreshArtistCommand>();
|
||||||
|
}
|
||||||
|
|
||||||
|
[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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,70 @@
|
||||||
|
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<DoubleConverter>
|
||||||
|
{
|
||||||
|
[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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
using FluentAssertions;
|
||||||
|
using Marr.Data.Converters;
|
||||||
|
using Marr.Data.Mapping;
|
||||||
|
using Moq;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
using NzbDrone.Core.Music;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Test.Datastore.Converters
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class EnumIntConverterFixture : CoreTest<Core.Datastore.Converters.EnumIntConverter>
|
||||||
|
{
|
||||||
|
[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<MemberInfo>();
|
||||||
|
mockMemberInfo.SetupGet(s => s.DeclaringType).Returns(typeof(Artist));
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
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 GuidConverterFixture : CoreTest<GuidConverter>
|
||||||
|
{
|
||||||
|
[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);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_guid_when_getting_string_from_db()
|
||||||
|
{
|
||||||
|
var guid = Guid.NewGuid();
|
||||||
|
|
||||||
|
var context = new ConverterContext
|
||||||
|
{
|
||||||
|
DbValue = guid.ToString()
|
||||||
|
};
|
||||||
|
|
||||||
|
Subject.FromDB(context).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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
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<Int32Converter>
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void should_return_int_when_saving_int_to_db()
|
||||||
|
{
|
||||||
|
var i = 5;
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
using System;
|
||||||
|
using FluentAssertions;
|
||||||
|
using Marr.Data.Converters;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using NzbDrone.Core.Datastore.Converters;
|
||||||
|
using NzbDrone.Core.Languages;
|
||||||
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Test.Datastore.Converters
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class LanguageIntConverterFixture : CoreTest<LanguageIntConverter>
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void should_return_int_when_saving_language_to_db()
|
||||||
|
{
|
||||||
|
var quality = Language.English;
|
||||||
|
|
||||||
|
Subject.ToDB(quality).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<InvalidOperationException>(() => Subject.ToDB("Not a language"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_language_when_getting_string_from_db()
|
||||||
|
{
|
||||||
|
var language = Language.English;
|
||||||
|
|
||||||
|
var context = new ConverterContext
|
||||||
|
{
|
||||||
|
DbValue = language.Id
|
||||||
|
};
|
||||||
|
|
||||||
|
Subject.FromDB(context).Should().Be(language);
|
||||||
|
}
|
||||||
|
|
||||||
|
[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(Language.Unknown);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
using System;
|
||||||
|
using FluentAssertions;
|
||||||
|
using Marr.Data.Converters;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using NzbDrone.Common.Disk;
|
||||||
|
using NzbDrone.Core.Datastore.Converters;
|
||||||
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
using NzbDrone.Test.Common;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Test.Datastore.Converters
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class OsPathConverterFixture : CoreTest<OsPathConverter>
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void should_return_string_when_saving_os_path_to_db()
|
||||||
|
{
|
||||||
|
var path = @"C:\Test\Music".AsOsAgnostic();
|
||||||
|
var osPath = new OsPath(path);
|
||||||
|
|
||||||
|
Subject.ToDB(osPath).Should().Be(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_os_path_when_getting_string_from_db()
|
||||||
|
{
|
||||||
|
var path = @"C:\Test\Music".AsOsAgnostic();
|
||||||
|
var osPath = new OsPath(path);
|
||||||
|
|
||||||
|
var context = new ConverterContext
|
||||||
|
{
|
||||||
|
DbValue = path
|
||||||
|
};
|
||||||
|
|
||||||
|
Subject.FromDB(context).Should().Be(osPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
[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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
using System;
|
||||||
|
using FluentAssertions;
|
||||||
|
using Marr.Data.Converters;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using NzbDrone.Core.Datastore.Converters;
|
||||||
|
using NzbDrone.Core.Qualities;
|
||||||
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Test.Datastore.Converters
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class QualityIntConverterFixture : CoreTest<QualityIntConverter>
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void should_return_int_when_saving_quality_to_db()
|
||||||
|
{
|
||||||
|
var quality = Quality.FLAC;
|
||||||
|
|
||||||
|
Subject.ToDB(quality).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<InvalidOperationException>(() => Subject.ToDB("Not a quality"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_quality_when_getting_string_from_db()
|
||||||
|
{
|
||||||
|
var quality = Quality.FLAC;
|
||||||
|
|
||||||
|
var context = new ConverterContext
|
||||||
|
{
|
||||||
|
DbValue = quality.Id
|
||||||
|
};
|
||||||
|
|
||||||
|
Subject.FromDB(context).Should().Be(quality);
|
||||||
|
}
|
||||||
|
|
||||||
|
[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(Quality.Unknown);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
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<TimeSpanConverter>
|
||||||
|
{
|
||||||
|
[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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
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 UtcConverterFixture : CoreTest<UtcConverter>
|
||||||
|
{
|
||||||
|
[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);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_time_span_when_getting_time_span_from_db()
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -53,7 +53,7 @@ namespace NzbDrone.Core.Test.MediaFiles.MediaFileDeletionService
|
||||||
.Returns(new[] { _artist.Path });
|
.Returns(new[] { _artist.Path });
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GivenSeriesFolderExists()
|
private void GivenArtistFolderExists()
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IDiskProvider>()
|
Mocker.GetMock<IDiskProvider>()
|
||||||
.Setup(s => s.FolderExists(_artist.Path))
|
.Setup(s => s.FolderExists(_artist.Path))
|
||||||
|
@ -64,13 +64,15 @@ namespace NzbDrone.Core.Test.MediaFiles.MediaFileDeletionService
|
||||||
public void should_throw_if_root_folder_does_not_exist()
|
public void should_throw_if_root_folder_does_not_exist()
|
||||||
{
|
{
|
||||||
Assert.Throws<NzbDroneClientException>(() => Subject.DeleteTrackFile(_artist, _trackFile));
|
Assert.Throws<NzbDroneClientException>(() => Subject.DeleteTrackFile(_artist, _trackFile));
|
||||||
|
ExceptionVerification.ExpectedWarns(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_should_throw_if_root_folder_is_empty()
|
public void should_throw_if_root_folder_is_empty()
|
||||||
{
|
{
|
||||||
GivenRootFolderExists();
|
GivenRootFolderExists();
|
||||||
Assert.Throws<NzbDroneClientException>(() => Subject.DeleteTrackFile(_artist, _trackFile));
|
Assert.Throws<NzbDroneClientException>(() => Subject.DeleteTrackFile(_artist, _trackFile));
|
||||||
|
ExceptionVerification.ExpectedWarns(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -90,7 +92,7 @@ namespace NzbDrone.Core.Test.MediaFiles.MediaFileDeletionService
|
||||||
{
|
{
|
||||||
GivenRootFolderExists();
|
GivenRootFolderExists();
|
||||||
GivenRootFolderHasFolders();
|
GivenRootFolderHasFolders();
|
||||||
GivenSeriesFolderExists();
|
GivenArtistFolderExists();
|
||||||
|
|
||||||
Subject.DeleteTrackFile(_artist, _trackFile);
|
Subject.DeleteTrackFile(_artist, _trackFile);
|
||||||
|
|
||||||
|
@ -103,7 +105,7 @@ namespace NzbDrone.Core.Test.MediaFiles.MediaFileDeletionService
|
||||||
{
|
{
|
||||||
GivenRootFolderExists();
|
GivenRootFolderExists();
|
||||||
GivenRootFolderHasFolders();
|
GivenRootFolderHasFolders();
|
||||||
GivenSeriesFolderExists();
|
GivenArtistFolderExists();
|
||||||
|
|
||||||
Mocker.GetMock<IDiskProvider>()
|
Mocker.GetMock<IDiskProvider>()
|
||||||
.Setup(s => s.FileExists(_trackFile.Path))
|
.Setup(s => s.FileExists(_trackFile.Path))
|
||||||
|
@ -120,7 +122,7 @@ namespace NzbDrone.Core.Test.MediaFiles.MediaFileDeletionService
|
||||||
{
|
{
|
||||||
GivenRootFolderExists();
|
GivenRootFolderExists();
|
||||||
GivenRootFolderHasFolders();
|
GivenRootFolderHasFolders();
|
||||||
GivenSeriesFolderExists();
|
GivenArtistFolderExists();
|
||||||
|
|
||||||
Mocker.GetMock<IDiskProvider>()
|
Mocker.GetMock<IDiskProvider>()
|
||||||
.Setup(s => s.FileExists(_trackFile.Path))
|
.Setup(s => s.FileExists(_trackFile.Path))
|
||||||
|
|
|
@ -105,7 +105,18 @@
|
||||||
<Compile Include="Configuration\ConfigServiceFixture.cs" />
|
<Compile Include="Configuration\ConfigServiceFixture.cs" />
|
||||||
<Compile Include="DataAugmentation\DailySeries\DailySeriesDataProxyFixture.cs" />
|
<Compile Include="DataAugmentation\DailySeries\DailySeriesDataProxyFixture.cs" />
|
||||||
<Compile Include="Datastore\BasicRepositoryFixture.cs" />
|
<Compile Include="Datastore\BasicRepositoryFixture.cs" />
|
||||||
|
<Compile Include="Datastore\Converters\BooleanIntConverterFixture.cs" />
|
||||||
|
<Compile Include="Datastore\Converters\CommandConverterFixture.cs" />
|
||||||
|
<Compile Include="Datastore\Converters\DoubleConverterFixture.cs" />
|
||||||
|
<Compile Include="Datastore\Converters\EnumIntConverterFixture.cs" />
|
||||||
|
<Compile Include="Datastore\Converters\GuidConverterFixture.cs" />
|
||||||
|
<Compile Include="Datastore\Converters\Int32ConverterFixture.cs" />
|
||||||
|
<Compile Include="Datastore\Converters\LanguageIntConverterFixture.cs" />
|
||||||
|
<Compile Include="Datastore\Converters\OsPathConverterFixture.cs" />
|
||||||
<Compile Include="Datastore\Converters\ProviderSettingConverterFixture.cs" />
|
<Compile Include="Datastore\Converters\ProviderSettingConverterFixture.cs" />
|
||||||
|
<Compile Include="Datastore\Converters\QualityIntConverterFixture.cs" />
|
||||||
|
<Compile Include="Datastore\Converters\TimeSpanConverterFixture.cs" />
|
||||||
|
<Compile Include="Datastore\Converters\UtcConverterFixture.cs" />
|
||||||
<Compile Include="Datastore\DatabaseFixture.cs" />
|
<Compile Include="Datastore\DatabaseFixture.cs" />
|
||||||
<Compile Include="Datastore\DatabaseRelationshipFixture.cs" />
|
<Compile Include="Datastore\DatabaseRelationshipFixture.cs" />
|
||||||
<Compile Include="Datastore\MappingExtentionFixture.cs" />
|
<Compile Include="Datastore\MappingExtentionFixture.cs" />
|
||||||
|
|
|
@ -25,6 +25,11 @@ namespace NzbDrone.Core.Datastore.Converters
|
||||||
|
|
||||||
public object ToDB(object clrValue)
|
public object ToDB(object clrValue)
|
||||||
{
|
{
|
||||||
|
if (clrValue == null)
|
||||||
|
{
|
||||||
|
return DBNull.Value;
|
||||||
|
}
|
||||||
|
|
||||||
var value = clrValue;
|
var value = clrValue;
|
||||||
|
|
||||||
return value.ToString();
|
return value.ToString();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using Marr.Data.Converters;
|
using Marr.Data.Converters;
|
||||||
using Marr.Data.Mapping;
|
using Marr.Data.Mapping;
|
||||||
|
|
||||||
|
@ -23,17 +23,7 @@ namespace NzbDrone.Core.Datastore.Converters
|
||||||
|
|
||||||
public object FromDB(ColumnMap map, object dbValue)
|
public object FromDB(ColumnMap map, object dbValue)
|
||||||
{
|
{
|
||||||
if (dbValue == DBNull.Value)
|
return FromDB(new ConverterContext { ColumnMap = map, DbValue = dbValue });
|
||||||
{
|
|
||||||
return DBNull.Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dbValue is int)
|
|
||||||
{
|
|
||||||
return dbValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Convert.ToInt32(dbValue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public object ToDB(object clrValue)
|
public object ToDB(object clrValue)
|
||||||
|
@ -43,4 +33,4 @@ namespace NzbDrone.Core.Datastore.Converters
|
||||||
|
|
||||||
public Type DbType { get; private set; }
|
public Type DbType { get; private set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using Marr.Data.Converters;
|
using Marr.Data.Converters;
|
||||||
using Marr.Data.Mapping;
|
using Marr.Data.Mapping;
|
||||||
using NzbDrone.Core.Qualities;
|
using NzbDrone.Core.Qualities;
|
||||||
|
@ -27,9 +27,9 @@ namespace NzbDrone.Core.Datastore.Converters
|
||||||
|
|
||||||
public object ToDB(object clrValue)
|
public object ToDB(object clrValue)
|
||||||
{
|
{
|
||||||
if(clrValue == DBNull.Value) return 0;
|
if (clrValue == DBNull.Value) return 0;
|
||||||
|
|
||||||
if(clrValue as Quality == null)
|
if (clrValue as Quality == null)
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException("Attempted to save a quality that isn't really a quality");
|
throw new InvalidOperationException("Attempted to save a quality that isn't really a quality");
|
||||||
}
|
}
|
||||||
|
@ -56,4 +56,4 @@ namespace NzbDrone.Core.Datastore.Converters
|
||||||
writer.WriteValue(ToDB(value));
|
writer.WriteValue(ToDB(value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using Marr.Data.Converters;
|
using Marr.Data.Converters;
|
||||||
using Marr.Data.Mapping;
|
using Marr.Data.Mapping;
|
||||||
|
@ -15,22 +15,17 @@ namespace NzbDrone.Core.Datastore.Converters
|
||||||
return TimeSpan.Zero;
|
return TimeSpan.Zero;
|
||||||
}
|
}
|
||||||
|
|
||||||
return TimeSpan.Parse(context.DbValue.ToString());
|
if (context.DbValue is TimeSpan)
|
||||||
|
{
|
||||||
|
return context.DbValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TimeSpan.Parse(context.DbValue.ToString(), CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
public object FromDB(ColumnMap map, object dbValue)
|
public object FromDB(ColumnMap map, object dbValue)
|
||||||
{
|
{
|
||||||
if (dbValue == DBNull.Value)
|
return FromDB(new ConverterContext { ColumnMap = map, DbValue = dbValue});
|
||||||
{
|
|
||||||
return DBNull.Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dbValue is TimeSpan)
|
|
||||||
{
|
|
||||||
return dbValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TimeSpan.Parse(dbValue.ToString(), CultureInfo.InvariantCulture);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public object ToDB(object clrValue)
|
public object ToDB(object clrValue)
|
||||||
|
@ -45,4 +40,4 @@ namespace NzbDrone.Core.Datastore.Converters
|
||||||
|
|
||||||
public Type DbType { get; private set; }
|
public Type DbType { get; private set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue