diff --git a/NzbDrone.App.Test/Fixtures.cs b/NzbDrone.App.Test/Fixtures.cs
index b3a5640d5..4089933e0 100644
--- a/NzbDrone.App.Test/Fixtures.cs
+++ b/NzbDrone.App.Test/Fixtures.cs
@@ -3,6 +3,6 @@ using NUnit.Framework;
using NzbDrone.Test.Common;
[SetUpFixture]
-public class Fixtures : LoggingFixtures
+public class Fixtures : LoggingTest
{
}
diff --git a/NzbDrone.Common.Test/EnviromentProviderTest.cs b/NzbDrone.Common.Test/EnviromentProviderTest.cs
index b4d7d6c3d..68da7c761 100644
--- a/NzbDrone.Common.Test/EnviromentProviderTest.cs
+++ b/NzbDrone.Common.Test/EnviromentProviderTest.cs
@@ -17,14 +17,6 @@ namespace NzbDrone.Common.Test
enviromentController.IsUserInteractive.Should().BeTrue();
}
- [Test]
- public void Log_path_should_not_be_empty()
- {
- enviromentController.LogPath.Should().NotBeBlank();
- Path.IsPathRooted(enviromentController.LogPath).Should().BeTrue("Path is not rooted");
-
- }
-
[Test]
public void StartupPath_should_not_be_empty()
{
diff --git a/NzbDrone.Common.Test/Fixtures.cs b/NzbDrone.Common.Test/Fixtures.cs
index b3a5640d5..4089933e0 100644
--- a/NzbDrone.Common.Test/Fixtures.cs
+++ b/NzbDrone.Common.Test/Fixtures.cs
@@ -3,6 +3,6 @@ using NUnit.Framework;
using NzbDrone.Test.Common;
[SetUpFixture]
-public class Fixtures : LoggingFixtures
+public class Fixtures : LoggingTest
{
}
diff --git a/NzbDrone.Common/EnviromentProvider.cs b/NzbDrone.Common/EnviromentProvider.cs
index fe7b78451..6ff76153f 100644
--- a/NzbDrone.Common/EnviromentProvider.cs
+++ b/NzbDrone.Common/EnviromentProvider.cs
@@ -32,11 +32,6 @@ namespace NzbDrone.Common
}
}
- public virtual String LogPath
- {
- get { return Environment.CurrentDirectory; }
- }
-
public virtual bool IsUserInteractive
{
get { return Environment.UserInteractive; }
@@ -68,26 +63,7 @@ namespace NzbDrone.Common
}
}
- public virtual string WebRoot
- {
- get
- {
- return Path.Combine(ApplicationPath, "NzbDrone.Web");
- }
- }
-
- public virtual string AppDataPath
- {
- get
- {
- var path = Path.Combine(WebRoot, "App_Data");
- if (!Directory.Exists(path))
- Directory.CreateDirectory(path);
-
- return path;
- }
- }
-
+
public virtual string StartUpPath
{
get
@@ -111,15 +87,6 @@ namespace NzbDrone.Common
}
-
- public virtual String TempPath
- {
- get
- {
- return Path.GetTempPath();
- }
- }
-
private static bool ContainsIIS(DirectoryInfo dir)
{
return dir.GetDirectories(IIS_FOLDER_NAME).Length != 0;
diff --git a/NzbDrone.Common/NzbDrone.Common.csproj b/NzbDrone.Common/NzbDrone.Common.csproj
index 4297ab830..04df7f468 100644
--- a/NzbDrone.Common/NzbDrone.Common.csproj
+++ b/NzbDrone.Common/NzbDrone.Common.csproj
@@ -50,6 +50,7 @@
+
diff --git a/NzbDrone.Common/PathProvider.cs b/NzbDrone.Common/PathProvider.cs
new file mode 100644
index 000000000..9925e72b5
--- /dev/null
+++ b/NzbDrone.Common/PathProvider.cs
@@ -0,0 +1,111 @@
+using System;
+using System.Diagnostics;
+using System.IO;
+using System.Reflection;
+
+namespace NzbDrone.Common
+{
+ public class PathProvider
+ {
+
+ private const string WEB_FOLDER = "NzbDrone.Web";
+ private const string APP_DATA = "App_Data";
+
+ private const string LOG_CONFIG_FILE = "log.config";
+ private const string APP_CONFIG_FILE = "config.xml";
+
+ private const string NZBDRONE_DB_FILE = "nzbdrone.sdf";
+ private const string LOG_DB_FILE = "log.sdf";
+
+ public const string UPDATE_SANDBOX_FOLDER_NAME = "nzbdrone_update";
+
+ private readonly string _applicationPath;
+
+
+ public PathProvider(EnviromentProvider enviromentProvider)
+ {
+ _applicationPath = enviromentProvider.ApplicationPath;
+ }
+
+ public PathProvider()
+ {
+
+ }
+
+ public virtual String LogPath
+ {
+ get { return Environment.CurrentDirectory; }
+ }
+
+ public virtual string WebRoot
+ {
+ get
+ {
+ return Path.Combine(_applicationPath, WEB_FOLDER);
+ }
+ }
+
+ public virtual string AppData
+ {
+ get
+ {
+ var path = Path.Combine(WebRoot, APP_DATA);
+ if (!Directory.Exists(path))
+ Directory.CreateDirectory(path);
+
+ return path;
+ }
+ }
+
+ public virtual string NzbDronoeDbFile
+ {
+ get
+ {
+
+ return Path.Combine(AppData, NZBDRONE_DB_FILE);
+ }
+ }
+
+ public virtual string LogDbFile
+ {
+ get
+ {
+
+ return Path.Combine(AppData, LOG_DB_FILE);
+ }
+ }
+
+ public virtual String SystemTemp
+ {
+ get
+ {
+ return Path.GetTempPath();
+ }
+ }
+
+ public string LogConfigFile
+ {
+ get { return Path.Combine(WebRoot, LOG_CONFIG_FILE); }
+ }
+
+ public string AppConfigFile
+ {
+ get { return Path.Combine(_applicationPath, APP_CONFIG_FILE); }
+ }
+
+ public string BannerPath
+ {
+ get { return Path.Combine(WebRoot, "Content", "Images", "Banners"); }
+ }
+
+ public string CacheFolder
+ {
+ get { return Path.Combine(AppData, "Cache"); }
+ }
+
+ public string UpdateSandboxFolder
+ {
+ get { return Path.Combine(SystemTemp, UPDATE_SANDBOX_FOLDER_NAME); }
+ }
+ }
+}
\ No newline at end of file
diff --git a/NzbDrone.Core.Test/Framework/Fixtures.cs b/NzbDrone.Core.Test/Framework/Fixtures.cs
index b5e8a4e52..a1fa89703 100644
--- a/NzbDrone.Core.Test/Framework/Fixtures.cs
+++ b/NzbDrone.Core.Test/Framework/Fixtures.cs
@@ -4,22 +4,22 @@ using NUnit.Framework;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
-[SetUpFixture]
-public class Fixtures : LoggingFixtures
-{
- [SetUp]
- public void SetUp()
- {
- var oldDbFiles = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.sdf", SearchOption.AllDirectories);
- foreach (var file in oldDbFiles)
- {
- try
- {
- File.Delete(file);
- }
- catch { }
- }
+//[SetUpFixture]
+//public class Fixtures : LoggingFixtures
+//{
+// //[SetUp]
+// //public void SetUp()
+// //{
+// // var oldDbFiles = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.sdf", SearchOption.AllDirectories);
+// // foreach (var file in oldDbFiles)
+// // {
+// // try
+// // {
+// // File.Delete(file);
+// // }
+// // catch { }
+// // }
- MockLib.CreateDataBaseTemplate();
- }
-}
+// // MockLib.CreateDataBaseTemplate();
+// //}
+//}
diff --git a/NzbDrone.Core.Test/Framework/TestBase.cs b/NzbDrone.Core.Test/Framework/TestBase.cs
index 344c1efd1..427b01c5c 100644
--- a/NzbDrone.Core.Test/Framework/TestBase.cs
+++ b/NzbDrone.Core.Test/Framework/TestBase.cs
@@ -1,13 +1,47 @@
using System.IO;
+using AutoMoq;
using NUnit.Framework;
+using Ninject;
+using NzbDrone.Common;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.Framework
{
- public class TestBase
+ public class TestBase : LoggingTest
// ReSharper disable InconsistentNaming
{
+ static TestBase()
+ {
+ InitLogging();
+
+ var oldDbFiles = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.sdf", SearchOption.AllDirectories);
+ foreach (var file in oldDbFiles)
+ {
+ try
+ {
+ File.Delete(file);
+ }
+ catch { }
+ }
+
+ MockLib.CreateDataBaseTemplate();
+ }
+
+ protected StandardKernel LiveKernel = null;
+ protected AutoMoqer Mocker = null;
+
+ protected string VirtualPath
+ {
+ get
+ {
+ var virtualPath = Path.Combine(TempFolder, "VirtualNzbDrone");
+ if (!Directory.Exists(virtualPath)) Directory.CreateDirectory(virtualPath);
+
+ return virtualPath;
+ }
+ }
+
[SetUp]
public virtual void SetupBase()
{
@@ -18,6 +52,9 @@ namespace NzbDrone.Core.Test.Framework
}
Directory.CreateDirectory(TempFolder);
+
+ LiveKernel = new StandardKernel();
+ Mocker = new AutoMoqer();
}
[TearDown]
@@ -27,6 +64,16 @@ namespace NzbDrone.Core.Test.Framework
}
+ protected void WithTempAsStartUpPath()
+ {
+ Mocker.GetMock()
+ .SetupGet(c => c.ApplicationPath)
+ .Returns(VirtualPath);
+
+ Mocker.Resolve();
+ }
+
+
protected string TempFolder
{
get { return Path.Combine(Directory.GetCurrentDirectory(), "temp"); }
diff --git a/NzbDrone.Core.Test/JobTests/BannerDownloadJobTest.cs b/NzbDrone.Core.Test/JobTests/BannerDownloadJobTest.cs
index 58a678bdd..59b50e506 100644
--- a/NzbDrone.Core.Test/JobTests/BannerDownloadJobTest.cs
+++ b/NzbDrone.Core.Test/JobTests/BannerDownloadJobTest.cs
@@ -92,7 +92,8 @@ namespace NzbDrone.Core.Test.JobTests
var fakeSeries = Builder.CreateListOfSize(10)
.Build();
- var path = Path.Combine(new EnviromentProvider().WebRoot, "Content", "Images", "Banners");
+
+ var pathProvider = Mocker.Resolve();
var mocker = new AutoMoqer(MockBehavior.Strict);
mocker.Resolve();
@@ -104,42 +105,42 @@ namespace NzbDrone.Core.Test.JobTests
.Returns(fakeSeries);
mocker.GetMock()
- .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(path, "1.jpg")))
+ .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(pathProvider.BannerPath, "1.jpg")))
.Throws(new WebException());
mocker.GetMock()
- .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(path, "2.jpg")));
+ .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(pathProvider.BannerPath, "2.jpg")));
mocker.GetMock()
- .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(path, "3.jpg")))
+ .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(pathProvider.BannerPath, "3.jpg")))
.Throws(new WebException());
mocker.GetMock()
- .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(path, "4.jpg")));
+ .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(pathProvider.BannerPath, "4.jpg")));
mocker.GetMock()
- .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(path, "5.jpg")))
+ .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(pathProvider.BannerPath, "5.jpg")))
.Throws(new WebException());
mocker.GetMock()
- .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(path, "6.jpg")));
+ .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(pathProvider.BannerPath, "6.jpg")));
mocker.GetMock()
- .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(path, "7.jpg")))
+ .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(pathProvider.BannerPath, "7.jpg")))
.Throws(new WebException());
mocker.GetMock()
- .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(path, "8.jpg")));
+ .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(pathProvider.BannerPath, "8.jpg")));
mocker.GetMock()
- .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(path, "9.jpg")))
+ .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(pathProvider.BannerPath, "9.jpg")))
.Throws(new WebException());
mocker.GetMock()
- .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(path, "10.jpg")));
+ .Setup(s => s.DownloadFile(It.IsAny(), Path.Combine(pathProvider.BannerPath, "10.jpg")));
mocker.GetMock()
diff --git a/NzbDrone.Core.Test/ProviderTests/ConfigFileProviderTest.cs b/NzbDrone.Core.Test/ProviderTests/ConfigFileProviderTest.cs
index 704fc9857..6b56ff532 100644
--- a/NzbDrone.Core.Test/ProviderTests/ConfigFileProviderTest.cs
+++ b/NzbDrone.Core.Test/ProviderTests/ConfigFileProviderTest.cs
@@ -2,6 +2,7 @@
using AutoMoq;
using FluentAssertions;
using NUnit.Framework;
+using NzbDrone.Common;
using NzbDrone.Core.Model;
using NzbDrone.Core.Providers.Core;
using NzbDrone.Core.Test.Framework;
@@ -15,14 +16,15 @@ namespace NzbDrone.Core.Test.ProviderTests
[SetUp]
public void SetUp()
{
+ WithTempAsStartUpPath();
+
//Reset config file
- var mocker = new AutoMoqer();
- var configFile = mocker.Resolve().ConfigFile;
+ var configFile = Mocker.Resolve().AppConfigFile;
if (File.Exists(configFile))
File.Delete(configFile);
- mocker.Resolve().CreateDefaultConfigFile();
+ Mocker.Resolve().CreateDefaultConfigFile();
}
[Test]
@@ -31,10 +33,8 @@ namespace NzbDrone.Core.Test.ProviderTests
const string key = "Port";
const string value = "8989";
- var mocker = new AutoMoqer();
-
//Act
- var result = mocker.Resolve().GetValue(key, value);
+ var result = Mocker.Resolve().GetValue(key, value);
//Assert
result.Should().Be(value);
@@ -46,10 +46,8 @@ namespace NzbDrone.Core.Test.ProviderTests
const string key = "Port";
const int value = 8989;
- var mocker = new AutoMoqer();
-
//Act
- var result = mocker.Resolve().GetValueInt(key, value);
+ var result = Mocker.Resolve().GetValueInt(key, value);
//Assert
result.Should().Be(value);
@@ -64,7 +62,7 @@ namespace NzbDrone.Core.Test.ProviderTests
var mocker = new AutoMoqer();
//Act
- var result = mocker.Resolve().GetValueBoolean(key, value);
+ var result = Mocker.Resolve().GetValueBoolean(key, value);
//Assert
result.Should().BeTrue();
@@ -76,7 +74,7 @@ namespace NzbDrone.Core.Test.ProviderTests
var mocker = new AutoMoqer();
//Act
- var result = mocker.Resolve().LaunchBrowser;
+ var result = Mocker.Resolve().LaunchBrowser;
//Assert
result.Should().Be(true);
@@ -87,10 +85,8 @@ namespace NzbDrone.Core.Test.ProviderTests
{
const int value = 8989;
- var mocker = new AutoMoqer();
-
//Act
- var result = mocker.Resolve().Port;
+ var result = Mocker.Resolve().Port;
//Assert
result.Should().Be(value);
@@ -102,13 +98,11 @@ namespace NzbDrone.Core.Test.ProviderTests
const string key = "LaunchBrowser";
const bool value = false;
- var mocker = new AutoMoqer();
-
//Act
- mocker.Resolve().SetValue(key, value);
+ Mocker.Resolve().SetValue(key, value);
//Assert
- var result = mocker.Resolve().LaunchBrowser;
+ var result = Mocker.Resolve().LaunchBrowser;
result.Should().Be(value);
}
@@ -118,13 +112,11 @@ namespace NzbDrone.Core.Test.ProviderTests
const string key = "Port";
const int value = 12345;
- var mocker = new AutoMoqer();
-
//Act
- mocker.Resolve().SetValue(key, value);
+ Mocker.Resolve().SetValue(key, value);
//Assert
- var result = mocker.Resolve().Port;
+ var result = Mocker.Resolve().Port;
result.Should().Be(value);
}
@@ -134,10 +126,8 @@ namespace NzbDrone.Core.Test.ProviderTests
const string key = "Hello";
const string value = "World";
- var mocker = new AutoMoqer();
-
//Act
- var result = mocker.Resolve().GetValue(key, value);
+ var result = Mocker.Resolve().GetValue(key, value);
//Assert
result.Should().Be(value);
@@ -149,10 +139,8 @@ namespace NzbDrone.Core.Test.ProviderTests
const string key = "Hello";
const string value = "World";
- var mocker = new AutoMoqer();
-
//Act
- var result = mocker.Resolve().GetValue(key, value, "Universe");
+ var result = Mocker.Resolve().GetValue(key, value, "Universe");
//Assert
result.Should().Be(value);
@@ -161,10 +149,9 @@ namespace NzbDrone.Core.Test.ProviderTests
[Test]
public void GetAuthenticationType_No_Existing_Value()
{
- var mocker = new AutoMoqer();
//Act
- var result = mocker.Resolve().AuthenticationType;
+ var result = Mocker.Resolve().AuthenticationType;
//Assert
result.Should().Be(AuthenticationType.Anonymous);
@@ -173,11 +160,11 @@ namespace NzbDrone.Core.Test.ProviderTests
[Test]
public void GetAuthenticationType_Windows()
{
- var mocker = new AutoMoqer();
- mocker.Resolve().SetValue("AuthenticationType", 1);
+
+ Mocker.Resolve().SetValue("AuthenticationType", 1);
//Act
- var result = mocker.Resolve().AuthenticationType;
+ var result = Mocker.Resolve().AuthenticationType;
//Assert
result.Should().Be(AuthenticationType.Windows);
diff --git a/NzbDrone.Core.Test/ProviderTests/TvDbProviderTest.cs b/NzbDrone.Core.Test/ProviderTests/TvDbProviderTest.cs
index a7e570261..cb894ebf6 100644
--- a/NzbDrone.Core.Test/ProviderTests/TvDbProviderTest.cs
+++ b/NzbDrone.Core.Test/ProviderTests/TvDbProviderTest.cs
@@ -5,6 +5,7 @@ using System.Collections.Generic;
using System.Linq;
using FluentAssertions;
using NUnit.Framework;
+using Ninject;
using NzbDrone.Common;
using NzbDrone.Core.Providers;
using NzbDrone.Core.Test.Framework;
@@ -16,30 +17,31 @@ namespace NzbDrone.Core.Test.ProviderTests
// ReSharper disable InconsistentNaming
public class TvDbProviderTest : TestBase
{
+ private TvDbProvider tvDbProvider;
+
+ [SetUp]
+ public void Setup()
+ {
+ tvDbProvider = LiveKernel.Get();
+ }
+
[TestCase("The Simpsons")]
[TestCase("Family Guy")]
[TestCase("South Park")]
public void successful_search(string title)
{
- var result = new TvDbProvider(new EnviromentProvider()).SearchSeries(title);
+ var result = tvDbProvider.SearchSeries(title);
result.Should().NotBeEmpty();
result[0].SeriesName.Should().Be(title);
}
-
-
-
-
[Test]
public void no_search_result()
{
- //setup
- var tvdbProvider = new TvDbProvider(new EnviromentProvider());
-
//act
- var result = tvdbProvider.SearchSeries(Guid.NewGuid().ToString());
+ var result = tvDbProvider.SearchSeries(Guid.NewGuid().ToString());
//assert
result.Should().BeEmpty();
@@ -49,11 +51,8 @@ namespace NzbDrone.Core.Test.ProviderTests
[Test]
public void none_unique_season_episode_number()
{
- //setup
- var tvdbProvider = new TvDbProvider(new EnviromentProvider());
-
//act
- var result = tvdbProvider.GetSeries(75978, true);//Family guy
+ var result = tvDbProvider.GetSeries(75978, true);//Family guy
//Asserts that when episodes are grouped by Season/Episode each group contains maximum of
//one item.
@@ -65,11 +64,8 @@ namespace NzbDrone.Core.Test.ProviderTests
[Test]
public void American_dad_fix()
{
- //setup
- var tvdbProvider = new TvDbProvider(new EnviromentProvider());
-
//act
- var result = tvdbProvider.GetSeries(73141, true);
+ var result = tvDbProvider.GetSeries(73141, true);
var seasonsNumbers = result.Episodes.Select(e => e.SeasonNumber)
.Distinct().ToList();
diff --git a/NzbDrone.Core.Test/ProviderTests/UpdateProviderTests/PreformUpdateFixture.cs b/NzbDrone.Core.Test/ProviderTests/UpdateProviderTests/PreformUpdateFixture.cs
index 68e28f688..a6d09601d 100644
--- a/NzbDrone.Core.Test/ProviderTests/UpdateProviderTests/PreformUpdateFixture.cs
+++ b/NzbDrone.Core.Test/ProviderTests/UpdateProviderTests/PreformUpdateFixture.cs
@@ -22,8 +22,8 @@ namespace NzbDrone.Core.Test.ProviderTests.UpdateProviderTests
public void setup()
{
_mocker = new AutoMoqer(MockBehavior.Strict);
- _mocker.GetMock()
- .SetupGet(c => c.TempPath).Returns(TempFolder);
+ _mocker.GetMock()
+ .SetupGet(c => c.SystemTemp).Returns(TempFolder);
}
@@ -39,11 +39,11 @@ namespace NzbDrone.Core.Test.ProviderTests.UpdateProviderTests
};
_mocker.GetMock().Setup(
- c => c.DownloadFile(updatePackage.Url, Path.Combine(TempFolder, UpdateProvider.SandboxFolderName ,updatePackage.FileName)));
+ c => c.DownloadFile(updatePackage.Url, Path.Combine(TempFolder, PathProvider.UPDATE_SANDBOX_FOLDER_NAME, updatePackage.FileName)));
_mocker.GetMock().Setup(
- c => c.ExtractArchive(Path.Combine(TempFolder, UpdateProvider.SandboxFolderName, updatePackage.FileName),
- Path.Combine(TempFolder, UpdateProvider.SandboxFolderName)));
+ c => c.ExtractArchive(Path.Combine(TempFolder, PathProvider.UPDATE_SANDBOX_FOLDER_NAME, updatePackage.FileName),
+ Path.Combine(TempFolder, PathProvider.UPDATE_SANDBOX_FOLDER_NAME)));
_mocker.Resolve().PreformUpdate(updatePackage);
}
@@ -52,7 +52,7 @@ namespace NzbDrone.Core.Test.ProviderTests.UpdateProviderTests
public void Should_download_and_extract_to_temp_folder()
{
- var updateSubFolder = new DirectoryInfo(Path.Combine(TempFolder, UpdateProvider.SandboxFolderName));
+ var updateSubFolder = new DirectoryInfo(Path.Combine(TempFolder, PathProvider.UPDATE_SANDBOX_FOLDER_NAME));
var updatePackage = new UpdatePackage
{
diff --git a/NzbDrone.Core/CentralDispatch.cs b/NzbDrone.Core/CentralDispatch.cs
index 37a3fb385..4d805a29e 100644
--- a/NzbDrone.Core/CentralDispatch.cs
+++ b/NzbDrone.Core/CentralDispatch.cs
@@ -39,7 +39,9 @@ namespace NzbDrone.Core
{
BindKernel();
- MigrationsHelper.Run(Connection.MainConnectionString, true);
+ var mainConnectionString = _kernel.Get().MainConnectionString;
+
+ MigrationsHelper.Run(mainConnectionString, true);
LogConfiguration.RegisterDatabaseLogger(_kernel.Get());
@@ -59,9 +61,11 @@ namespace NzbDrone.Core
Logger.Debug("Binding Ninject's Kernel");
_kernel = new StandardKernel();
- _kernel.Bind().ToMethod(c => Connection.GetPetaPocoDb(Connection.MainConnectionString)).InTransientScope();
- _kernel.Bind().ToMethod(c => Connection.GetPetaPocoDb(Connection.LogConnectionString, false)).WhenInjectedInto().InSingletonScope();
- _kernel.Bind().ToMethod(c => Connection.GetPetaPocoDb(Connection.LogConnectionString)).WhenInjectedInto().InSingletonScope();
+ var connection = _kernel.Get();
+
+ _kernel.Bind().ToMethod(c => connection.GetMainPetaPocoDb()).InTransientScope();
+ _kernel.Bind().ToMethod(c => connection.GetLogPetaPocoDb(false)).WhenInjectedInto().InSingletonScope();
+ _kernel.Bind().ToMethod(c => connection.GetLogPetaPocoDb()).WhenInjectedInto().InSingletonScope();
_kernel.Bind().ToSelf().InSingletonScope();
}
diff --git a/NzbDrone.Core/Datastore/Connection.cs b/NzbDrone.Core/Datastore/Connection.cs
index 7c05d377f..8dfc38859 100644
--- a/NzbDrone.Core/Datastore/Connection.cs
+++ b/NzbDrone.Core/Datastore/Connection.cs
@@ -10,38 +10,51 @@ using PetaPoco;
namespace NzbDrone.Core.Datastore
{
- public static class Connection
+ public class Connection
{
- private static EnviromentProvider _enviromentProvider = new EnviromentProvider();
+ private readonly PathProvider _pathProvider;
- static Connection()
+ public Connection(PathProvider pathProvider)
{
- Database.Mapper = new CustomeMapper();
+ _pathProvider = pathProvider;
}
-
- public static string GetConnectionString(string path)
+ static Connection()
{
- //return String.Format("Data Source={0};Version=3;Cache Size=30000;Pooling=true;Default Timeout=2", path);
- return String.Format("Data Source={0}", path);
+ Database.Mapper = new CustomeMapper();
}
- public static String MainConnectionString
+ public String MainConnectionString
{
get
{
- return GetConnectionString(Path.Combine(_enviromentProvider.AppDataPath, "nzbdrone.sdf"));
+ return GetConnectionString(_pathProvider.NzbDronoeDbFile);
}
}
- public static String LogConnectionString
+ public String LogConnectionString
{
get
{
- return GetConnectionString(Path.Combine(_enviromentProvider.AppDataPath, "log.sdf"));
+ return GetConnectionString(_pathProvider.LogDbFile);
}
}
+ public static string GetConnectionString(string path)
+ {
+ //return String.Format("Data Source={0};Version=3;Cache Size=30000;Pooling=true;Default Timeout=2", path);
+ return String.Format("Data Source={0}", path);
+ }
+
+ public IDatabase GetMainPetaPocoDb(Boolean profiled = true)
+ {
+ return GetPetaPocoDb(MainConnectionString, profiled);
+ }
+
+ public IDatabase GetLogPetaPocoDb(Boolean profiled = true)
+ {
+ return GetPetaPocoDb(LogConnectionString, profiled);
+ }
public static IDatabase GetPetaPocoDb(string connectionString, Boolean profiled = true)
{
diff --git a/NzbDrone.Core/Instrumentation/LogConfiguration.cs b/NzbDrone.Core/Instrumentation/LogConfiguration.cs
index d94c6d520..8ce6037e7 100644
--- a/NzbDrone.Core/Instrumentation/LogConfiguration.cs
+++ b/NzbDrone.Core/Instrumentation/LogConfiguration.cs
@@ -7,17 +7,23 @@ using NzbDrone.Core.Providers;
namespace NzbDrone.Core.Instrumentation
{
- public static class LogConfiguration
+ public class LogConfiguration
{
+ private readonly PathProvider _pathProvider;
- public static void Setup()
+ public LogConfiguration(PathProvider pathProvider)
+ {
+ _pathProvider = pathProvider;
+ }
+
+ public void Setup()
{
if (Common.EnviromentProvider.IsProduction)
{
LogManager.ThrowExceptions = false;
}
- LogManager.Configuration = new XmlLoggingConfiguration(Path.Combine(new EnviromentProvider().WebRoot, "log.config"), false);
+ LogManager.Configuration = new XmlLoggingConfiguration(_pathProvider.LogConfigFile, false);
Common.LogConfiguration.RegisterConsoleLogger(LogLevel.Info, "NzbDrone.Web.MvcApplication");
Common.LogConfiguration.RegisterConsoleLogger(LogLevel.Info, "NzbDrone.Core.CentralDispatch");
diff --git a/NzbDrone.Core/Providers/Core/ConfigFileProvider.cs b/NzbDrone.Core/Providers/Core/ConfigFileProvider.cs
index 5047fec37..25ffac54e 100644
--- a/NzbDrone.Core/Providers/Core/ConfigFileProvider.cs
+++ b/NzbDrone.Core/Providers/Core/ConfigFileProvider.cs
@@ -9,12 +9,13 @@ namespace NzbDrone.Core.Providers.Core
{
public class ConfigFileProvider
{
- private string _configFile = Path.Combine(new EnviromentProvider().AppDataPath, "Config.xml");
+ private readonly PathProvider _pathProvider;
- public string ConfigFile
+ private readonly string _configFile;
+ public ConfigFileProvider(PathProvider pathProvider)
{
- get { return _configFile; }
- set { _configFile = value; }
+ _pathProvider = pathProvider;
+ _configFile = _pathProvider.AppConfigFile;
}
public virtual int Port
@@ -37,7 +38,7 @@ namespace NzbDrone.Core.Providers.Core
public virtual string GetValue(string key, object defaultValue, string parent = null)
{
- var xDoc = XDocument.Load(ConfigFile);
+ var xDoc = XDocument.Load(_configFile);
var config = xDoc.Descendants("Config").Single();
var parentContainer = config;
@@ -50,7 +51,7 @@ namespace NzbDrone.Core.Providers.Core
SetValue(key, defaultValue, parent);
//Reload the configFile
- xDoc = XDocument.Load(ConfigFile);
+ xDoc = XDocument.Load(_configFile);
config = xDoc.Descendants("Config").Single();
}
@@ -81,7 +82,7 @@ namespace NzbDrone.Core.Providers.Core
public virtual void SetValue(string key, object value, string parent = null)
{
- var xDoc = XDocument.Load(ConfigFile);
+ var xDoc = XDocument.Load(_configFile);
var config = xDoc.Descendants("Config").Single();
var parentContainer = config;
@@ -105,18 +106,18 @@ namespace NzbDrone.Core.Providers.Core
else
parentContainer.Descendants(key).Single().Value = value.ToString();
- xDoc.Save(ConfigFile);
+ xDoc.Save(_configFile);
}
public virtual void CreateDefaultConfigFile()
{
- if (!File.Exists(ConfigFile))
+ if (!File.Exists(_configFile))
{
var xDoc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));
xDoc.Add(new XElement("Config"));
- xDoc.Save(ConfigFile);
+ xDoc.Save(_configFile);
}
}
}
diff --git a/NzbDrone.Core/Providers/Jobs/BannerDownloadJob.cs b/NzbDrone.Core/Providers/Jobs/BannerDownloadJob.cs
index 15e0ad431..8f8da8622 100644
--- a/NzbDrone.Core/Providers/Jobs/BannerDownloadJob.cs
+++ b/NzbDrone.Core/Providers/Jobs/BannerDownloadJob.cs
@@ -18,18 +18,20 @@ namespace NzbDrone.Core.Providers.Jobs
private readonly HttpProvider _httpProvider;
private readonly DiskProvider _diskProvider;
private readonly EnviromentProvider _enviromentProvider;
+ private readonly PathProvider _pathProvider;
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
- private string _bannerPath = "";
private const string _bannerUrlPrefix = "http://www.thetvdb.com/banners/";
[Inject]
- public BannerDownloadJob(SeriesProvider seriesProvider, HttpProvider httpProvider, DiskProvider diskProvider, EnviromentProvider enviromentProvider)
+ public BannerDownloadJob(SeriesProvider seriesProvider, HttpProvider httpProvider, DiskProvider diskProvider,
+ EnviromentProvider enviromentProvider, PathProvider pathProvider)
{
_seriesProvider = seriesProvider;
_httpProvider = httpProvider;
_diskProvider = diskProvider;
_enviromentProvider = enviromentProvider;
+ _pathProvider = pathProvider;
}
public BannerDownloadJob()
@@ -51,8 +53,8 @@ namespace NzbDrone.Core.Providers.Jobs
{
Logger.Debug("Starting banner download job");
- _bannerPath = Path.Combine(_enviromentProvider.WebRoot, "Content", "Images", "Banners");
- _diskProvider.CreateDirectory(_bannerPath);
+
+ _diskProvider.CreateDirectory(_pathProvider.BannerPath);
if (targetId > 0)
{
@@ -76,7 +78,7 @@ namespace NzbDrone.Core.Providers.Jobs
public virtual void DownloadBanner(ProgressNotification notification, Series series)
{
- var bannerFilename = String.Format("{0}{1}{2}.jpg", _bannerPath, Path.DirectorySeparatorChar, series.SeriesId);
+ var bannerFilename = Path.Combine(_pathProvider.BannerPath, series.SeriesId.ToString(), ".jpg");
notification.CurrentMessage = string.Format("Downloading banner for '{0}'", series.Title);
diff --git a/NzbDrone.Core/Providers/TvDbProvider.cs b/NzbDrone.Core/Providers/TvDbProvider.cs
index da8465070..7998e55ef 100644
--- a/NzbDrone.Core/Providers/TvDbProvider.cs
+++ b/NzbDrone.Core/Providers/TvDbProvider.cs
@@ -13,22 +13,20 @@ namespace NzbDrone.Core.Providers
{
public class TvDbProvider
{
- private readonly EnviromentProvider _enviromentProvider;
private const string TVDB_APIKEY = "5D2D188E86E07F4F";
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
private readonly TvdbHandler _handler;
[Inject]
- public TvDbProvider(EnviromentProvider enviromentProvider)
+ public TvDbProvider(PathProvider pathProvider)
{
- _enviromentProvider = enviromentProvider;
- _handler = new TvdbHandler(new XmlCacheProvider(_enviromentProvider.AppDataPath + @"\cache\tvdb"), TVDB_APIKEY);
+ _handler = new TvdbHandler(new XmlCacheProvider(pathProvider.CacheFolder), TVDB_APIKEY);
}
public TvDbProvider()
{
-
+
}
public virtual IList SearchSeries(string title)
diff --git a/NzbDrone.Core/Providers/UpdateProvider.cs b/NzbDrone.Core/Providers/UpdateProvider.cs
index bc682c026..dab67ad13 100644
--- a/NzbDrone.Core/Providers/UpdateProvider.cs
+++ b/NzbDrone.Core/Providers/UpdateProvider.cs
@@ -18,19 +18,22 @@ namespace NzbDrone.Core.Providers
private readonly HttpProvider _httpProvider;
private readonly ConfigProvider _configProvider;
private readonly EnviromentProvider _enviromentProvider;
+ private readonly PathProvider _pathProvider;
private readonly DiskProvider _diskProvider;
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
private static readonly Regex ParseRegex = new Regex(@"(?:\>)(?NzbDrone.+?(?\d+\.\d+\.\d+\.\d+).+?)(?:\<\/A\>)", RegexOptions.IgnoreCase);
- public const string SandboxFolderName = "nzbdrone_update";
+
[Inject]
- public UpdateProvider(HttpProvider httpProvider, ConfigProvider configProvider, EnviromentProvider enviromentProvider, DiskProvider diskProvider)
+ public UpdateProvider(HttpProvider httpProvider, ConfigProvider configProvider, EnviromentProvider enviromentProvider,
+ PathProvider pathProvider, DiskProvider diskProvider)
{
_httpProvider = httpProvider;
_configProvider = configProvider;
_enviromentProvider = enviromentProvider;
+ _pathProvider = pathProvider;
_diskProvider = diskProvider;
}
@@ -73,15 +76,14 @@ namespace NzbDrone.Core.Providers
public virtual void PreformUpdate(UpdatePackage updatePackage)
{
- var tempSubFolder = Path.Combine(_enviromentProvider.TempPath, SandboxFolderName);
- var packageDestination = Path.Combine(tempSubFolder, updatePackage.FileName);
+ var packageDestination = Path.Combine(_pathProvider.UpdateSandboxFolder, updatePackage.FileName);
Logger.Info("Downloading update package from [{0}] to [{1}]", updatePackage.Url, packageDestination);
_httpProvider.DownloadFile(updatePackage.Url, packageDestination);
Logger.Info("Download completed for update package from [{0}]", updatePackage.FileName);
Logger.Info("Extracting Update package");
- _diskProvider.ExtractArchive(packageDestination, tempSubFolder);
+ _diskProvider.ExtractArchive(packageDestination, _pathProvider.UpdateSandboxFolder);
Logger.Info("Update package extracted successfully");
}
diff --git a/NzbDrone.Test.Common/LoggingFixtures.cs b/NzbDrone.Test.Common/LoggingTest.cs
similarity index 88%
rename from NzbDrone.Test.Common/LoggingFixtures.cs
rename to NzbDrone.Test.Common/LoggingTest.cs
index f8db8d252..df68f0479 100644
--- a/NzbDrone.Test.Common/LoggingFixtures.cs
+++ b/NzbDrone.Test.Common/LoggingTest.cs
@@ -5,11 +5,9 @@ using NzbDrone.Common;
namespace NzbDrone.Test.Common
{
- public abstract class LoggingFixtures
+ public abstract class LoggingTest
{
-
- [SetUp]
- public void SetUpBase()
+ protected static void InitLogging()
{
LogConfiguration.RegisterConsoleLogger(LogLevel.Trace);
LogConfiguration.RegisterUdpLogger();
diff --git a/NzbDrone.Test.Common/NzbDrone.Test.Common.csproj b/NzbDrone.Test.Common/NzbDrone.Test.Common.csproj
index a30c1aab0..fba895fe7 100644
--- a/NzbDrone.Test.Common/NzbDrone.Test.Common.csproj
+++ b/NzbDrone.Test.Common/NzbDrone.Test.Common.csproj
@@ -69,7 +69,7 @@
-
+
diff --git a/NzbDrone.Update.Test/Fixtures.cs b/NzbDrone.Update.Test/Fixtures.cs
index b3a5640d5..4089933e0 100644
--- a/NzbDrone.Update.Test/Fixtures.cs
+++ b/NzbDrone.Update.Test/Fixtures.cs
@@ -3,6 +3,6 @@ using NUnit.Framework;
using NzbDrone.Test.Common;
[SetUpFixture]
-public class Fixtures : LoggingFixtures
+public class Fixtures : LoggingTest
{
}
diff --git a/NzbDrone.Web/Global.asax.cs b/NzbDrone.Web/Global.asax.cs
index fb0f24137..906410b98 100644
--- a/NzbDrone.Web/Global.asax.cs
+++ b/NzbDrone.Web/Global.asax.cs
@@ -43,24 +43,23 @@ namespace NzbDrone.Web
//base.OnApplicationStarted();
AreaRegistration.RegisterAllAreas();
- var razor =ViewEngines.Engines.Where(e => e.GetType() == typeof (RazorViewEngine)).Single();
+ var razor = ViewEngines.Engines.Where(e => e.GetType() == typeof(RazorViewEngine)).Single();
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(razor);
RegisterGlobalFilters(GlobalFilters.Filters);
-
+
Logger.Info("Fully initialized and ready.");
}
protected override IKernel CreateKernel()
{
- LogConfiguration.Setup();
+ var kernel = CentralDispatch.NinjectKernel;
+ kernel.Get().Setup();
Logger.Info("NZBDrone Starting up.");
- CentralDispatch.DedicateToHost();
- var kernel = CentralDispatch.NinjectKernel;
+ CentralDispatch.DedicateToHost();
- // kernel.Bind().ToConstant(kernel.Get("LogDb"));
kernel.Load(Assembly.GetExecutingAssembly());
return kernel;
}
diff --git a/config.xml b/config.xml
new file mode 100644
index 000000000..5d35eea2e
--- /dev/null
+++ b/config.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file