mirror of https://github.com/Radarr/Radarr
Cleaned up ConfigProvider. Added reflection based test for all properties in ConfigProvider.
This commit is contained in:
parent
aa418a444b
commit
c23e736cc6
|
@ -1,9 +1,14 @@
|
||||||
using AutoMoq;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using AutoMoq;
|
||||||
using FluentAssertions;
|
using FluentAssertions;
|
||||||
|
using Moq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NzbDrone.Core.Providers.Core;
|
using NzbDrone.Core.Providers.Core;
|
||||||
using NzbDrone.Core.Repository;
|
using NzbDrone.Core.Repository;
|
||||||
using NzbDrone.Core.Test.Framework;
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
using PetaPoco;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Test.ProviderTests
|
namespace NzbDrone.Core.Test.ProviderTests
|
||||||
{
|
{
|
||||||
|
@ -110,5 +115,54 @@ namespace NzbDrone.Core.Test.ProviderTests
|
||||||
db.Fetch<Config>().Should().HaveCount(1);
|
db.Fetch<Config>().Should().HaveCount(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
[Description("This test will use reflection to ensure each config property read/writes to a unique key")]
|
||||||
|
public void config_properties_should_write_and_read_using_same_key()
|
||||||
|
{
|
||||||
|
|
||||||
|
var mocker = new AutoMoqer(MockBehavior.Strict);
|
||||||
|
var db = MockLib.GetEmptyDatabase();
|
||||||
|
mocker.SetConstant(db);
|
||||||
|
|
||||||
|
var configProvider = mocker.Resolve<ConfigProvider>();
|
||||||
|
var allProperties = typeof(ConfigProvider).GetProperties();
|
||||||
|
|
||||||
|
|
||||||
|
//Act
|
||||||
|
foreach (var propertyInfo in allProperties)
|
||||||
|
{
|
||||||
|
object value = null;
|
||||||
|
|
||||||
|
if (propertyInfo.PropertyType == typeof(string))
|
||||||
|
{
|
||||||
|
value = new Guid().ToString();
|
||||||
|
}
|
||||||
|
else if (propertyInfo.PropertyType == typeof(int))
|
||||||
|
{
|
||||||
|
value = DateTime.Now.Millisecond;
|
||||||
|
}
|
||||||
|
else if (propertyInfo.PropertyType == typeof(bool))
|
||||||
|
{
|
||||||
|
value = true;
|
||||||
|
}
|
||||||
|
else if (propertyInfo.PropertyType.BaseType == typeof(Enum))
|
||||||
|
{
|
||||||
|
value = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
propertyInfo.GetSetMethod().Invoke(configProvider, new[] { value });
|
||||||
|
var returnValue = propertyInfo.GetGetMethod().Invoke(configProvider, null);
|
||||||
|
|
||||||
|
if (propertyInfo.PropertyType.BaseType == typeof(Enum))
|
||||||
|
{
|
||||||
|
returnValue = (int)returnValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
returnValue.Should().Be(value, propertyInfo.Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
db.Fetch<Config>().Should()
|
||||||
|
.HaveSameCount(allProperties, "two different properties are writing to the same key in db. Copy/Past fail.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -20,34 +20,13 @@ namespace NzbDrone.Core.Providers.Core
|
||||||
_database = database;
|
_database = database;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IList<Config> All()
|
|
||||||
{
|
|
||||||
return _database.Fetch<Config>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ConfigProvider()
|
public ConfigProvider()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual String ApiKey
|
public IList<Config> All()
|
||||||
{
|
{
|
||||||
get { return GetValue("ApiKey"); }
|
return _database.Fetch<Config>();
|
||||||
|
|
||||||
set { SetValue("ApiKey", value); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual String EpisodeNameFormat
|
|
||||||
{
|
|
||||||
get { return GetValue("EpisodeNameFormat"); }
|
|
||||||
|
|
||||||
set { SetValue("EpisodeNameFormat", value); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual String SeriesRoot
|
|
||||||
{
|
|
||||||
get { return GetValue("SeriesRoots"); }
|
|
||||||
|
|
||||||
set { SetValue("SeriesRoots", value); }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual String NzbMatrixUsername
|
public virtual String NzbMatrixUsername
|
||||||
|
@ -106,20 +85,6 @@ namespace NzbDrone.Core.Providers.Core
|
||||||
set { SetValue("NewzbinPassword", value); }
|
set { SetValue("NewzbinPassword", value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual int SyncFrequency
|
|
||||||
{
|
|
||||||
get { return GetValueInt("SyncFrequency"); }
|
|
||||||
|
|
||||||
set { SetValue("SyncFrequency", value); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual Boolean DownloadPropers
|
|
||||||
{
|
|
||||||
get { return GetValueBoolean("DownloadPropers"); }
|
|
||||||
|
|
||||||
set { SetValue("DownloadPropers", value); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual String SabHost
|
public virtual String SabHost
|
||||||
{
|
{
|
||||||
get { return GetValue("SabHost", "localhost"); }
|
get { return GetValue("SabHost", "localhost"); }
|
||||||
|
@ -176,20 +141,6 @@ namespace NzbDrone.Core.Providers.Core
|
||||||
set { SetValue("SabTvDropDirectory", value); }
|
set { SetValue("SabTvDropDirectory", value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual Boolean UseBlackhole
|
|
||||||
{
|
|
||||||
get { return GetValueBoolean("UseBlackhole"); }
|
|
||||||
|
|
||||||
set { SetValue("UseBlackhole", value); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual String BlackholeDirectory
|
|
||||||
{
|
|
||||||
get { return GetValue("BlackholeDirectory"); }
|
|
||||||
|
|
||||||
set { SetValue("BlackholeDirectory", value); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual bool SortingIncludeSeriesName
|
public virtual bool SortingIncludeSeriesName
|
||||||
{
|
{
|
||||||
get { return GetValueBoolean("Sorting_SeriesName", true); }
|
get { return GetValueBoolean("Sorting_SeriesName", true); }
|
||||||
|
@ -252,13 +203,6 @@ namespace NzbDrone.Core.Providers.Core
|
||||||
set { SetValue("DefaultQualityProfile", value); }
|
set { SetValue("DefaultQualityProfile", value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual Boolean XbmcEnabled
|
|
||||||
{
|
|
||||||
get { return GetValueBoolean("XbmcEnabled"); }
|
|
||||||
|
|
||||||
set { SetValue("XbmcEnabled", value); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual Boolean XbmcNotifyOnGrab
|
public virtual Boolean XbmcNotifyOnGrab
|
||||||
{
|
{
|
||||||
get { return GetValueBoolean("XbmcNotifyOnGrab"); }
|
get { return GetValueBoolean("XbmcNotifyOnGrab"); }
|
||||||
|
@ -328,30 +272,26 @@ namespace NzbDrone.Core.Providers.Core
|
||||||
|
|
||||||
public virtual string GetValue(string key, object defaultValue)
|
public virtual string GetValue(string key, object defaultValue)
|
||||||
{
|
{
|
||||||
string value;
|
|
||||||
|
|
||||||
var dbValue = _database.SingleOrDefault<Config>("WHERE [Key] =@0", key);
|
var dbValue = _database.SingleOrDefault<Config>("WHERE [Key] =@0", key);
|
||||||
|
|
||||||
if (dbValue != null && !String.IsNullOrEmpty(dbValue.Value))
|
if (dbValue != null && !String.IsNullOrEmpty(dbValue.Value))
|
||||||
return dbValue.Value;
|
return dbValue.Value;
|
||||||
|
|
||||||
Logger.Trace("Unable to find config key '{0}' defaultValue:'{1}'", key, defaultValue);
|
Logger.Trace("Unable to find config key '{0}' defaultValue:'{1}'", key, defaultValue);
|
||||||
value = defaultValue.ToString();
|
return defaultValue.ToString();
|
||||||
|
|
||||||
return value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void SetValue(string key, Boolean value)
|
private void SetValue(string key, Boolean value)
|
||||||
{
|
{
|
||||||
SetValue(key, value.ToString());
|
SetValue(key, value.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void SetValue(string key, int value)
|
private void SetValue(string key, int value)
|
||||||
{
|
{
|
||||||
SetValue(key, value.ToString());
|
SetValue(key, value.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void SetValue(string key, string value)
|
public void SetValue(string key, string value)
|
||||||
{
|
{
|
||||||
if (String.IsNullOrEmpty(key))
|
if (String.IsNullOrEmpty(key))
|
||||||
throw new ArgumentOutOfRangeException("key");
|
throw new ArgumentOutOfRangeException("key");
|
||||||
|
|
|
@ -1,8 +1,4 @@
|
||||||
using System;
|
using AutoMoq;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using AutoMoq;
|
|
||||||
using FizzWare.NBuilder;
|
using FizzWare.NBuilder;
|
||||||
using Moq;
|
using Moq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
|
|
Loading…
Reference in New Issue