1
0
Fork 0
mirror of https://github.com/lidarr/Lidarr synced 2024-12-24 08:42:53 +00:00

added open generic registration for simple repository, services can now use simple repository independently.

This commit is contained in:
kay.one 2013-02-16 21:09:35 -08:00
parent 63cf7a3b85
commit e7deda4d5d
9 changed files with 28 additions and 45 deletions

View file

@ -50,14 +50,14 @@ protected IObjectDatabase Db
protected void WithObjectDb(bool memory = true)
{
if (memory)
{
_db = new SiaqoDbFactory(new DiskProvider(),new EnvironmentProvider()).CreateMemoryDb();
}
else
{
//if (memory)
//{
// _db = new SiaqoDbFactory(new DiskProvider(),new EnvironmentProvider()).CreateMemoryDb();
//}
//else
//{
_db = new SiaqoDbFactory(new DiskProvider(),new EnvironmentProvider()).Create(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Guid.NewGuid().ToString()));
}
//}
Mocker.SetConstant(Db);
}

View file

@ -8,6 +8,7 @@
using Moq;
using NUnit.Framework;
using NzbDrone.Common;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.RootFolders;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
@ -21,7 +22,7 @@ public class FreeSpaceOnDrivesFixture : CoreTest<RootFolderService>
[Test]
public void should_return_one_drive_when_only_one_root_dir_exists()
{
Mocker.GetMock<IRootFolderRepository>()
Mocker.GetMock<IBasicRepository<RootFolder>>()
.Setup(s => s.All())
.Returns(new List<RootFolder> { new RootFolder { OID = 1, Path = @"C:\Test\TV" } });
@ -41,7 +42,7 @@ public void should_return_one_drive_when_only_one_root_dir_exists()
[Test]
public void should_return_one_drive_when_two_rootDirs_on_the_same_drive_exist()
{
Mocker.GetMock<IRootFolderRepository>()
Mocker.GetMock<IBasicRepository<RootFolder>>()
.Setup(s => s.All())
.Returns(new List<RootFolder> { new RootFolder { OID = 1, Path = @"C:\Test\TV" },
new RootFolder { OID = 2, Path = @"C:\Test\TV2" }});
@ -62,7 +63,7 @@ public void should_return_one_drive_when_two_rootDirs_on_the_same_drive_exist()
[Test]
public void should_return_two_drives_when_two_rootDirs_on_the_different_drive_exist()
{
Mocker.GetMock<IRootFolderRepository>()
Mocker.GetMock<IBasicRepository<RootFolder>>()
.Setup(s => s.All())
.Returns(new List<RootFolder> { new RootFolder { OID = 1, Path = @"C:\Test\TV" },
new RootFolder { OID = 2, Path = @"D:\Test\TV" }});
@ -87,7 +88,7 @@ public void should_return_two_drives_when_two_rootDirs_on_the_different_drive_ex
[Test]
public void should_skip_rootDir_if_not_found_on_disk()
{
Mocker.GetMock<IRootFolderRepository>()
Mocker.GetMock<IBasicRepository<RootFolder>>()
.Setup(s => s.All())
.Returns(new List<RootFolder> { new RootFolder { OID = 1, Path = @"C:\Test\TV" } });

View file

@ -8,6 +8,7 @@
using Moq;
using NUnit.Framework;
using NzbDrone.Common;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.RootFolders;
using NzbDrone.Core.Test.Framework;
@ -24,7 +25,7 @@ public void Setup()
.Setup(m => m.FolderExists(It.IsAny<string>()))
.Returns(true);
Mocker.GetMock<IRootFolderRepository>()
Mocker.GetMock<IBasicRepository<RootFolder>>()
.Setup(s => s.All())
.Returns(new List<RootFolder>());
}
@ -44,7 +45,7 @@ public void should_be_able_to_add_root_dir(string path)
Subject.Add(root);
Mocker.GetMock<IRootFolderRepository>().Verify(c => c.Add(root), Times.Once());
Mocker.GetMock<IBasicRepository<RootFolder>>().Verify(c => c.Add(root), Times.Once());
}
[Test]
@ -59,14 +60,14 @@ public void should_throw_if_folder_being_added_doesnt_exist()
public void should_be_able_to_remove_root_dir()
{
Subject.Remove(1);
Mocker.GetMock<IRootFolderRepository>().Verify(c => c.Delete(1), Times.Once());
Mocker.GetMock<IBasicRepository<RootFolder>>().Verify(c => c.Delete(1), Times.Once());
}
public void None_existing_folder_returns_empty_list()
{
WithNoneExistingFolder();
Mocker.GetMock<IRootFolderRepository>().Setup(c => c.All()).Returns(new List<RootFolder>());
Mocker.GetMock<IBasicRepository<RootFolder>>().Setup(c => c.All()).Returns(new List<RootFolder>());
const string path = "d:\\bad folder";
@ -96,7 +97,7 @@ public void invalid_folder_path_throws_on_add(string path)
[Test]
public void adding_duplicated_root_folder_should_throw()
{
Mocker.GetMock<IRootFolderRepository>().Setup(c => c.All()).Returns(new List<RootFolder> { new RootFolder { Path = "C:\\TV" } });
Mocker.GetMock<IBasicRepository<RootFolder>>().Setup(c => c.All()).Returns(new List<RootFolder> { new RootFolder { Path = "C:\\TV" } });
Assert.Throws<InvalidOperationException>(() => Subject.Add(new RootFolder { Path = @"C:\TV" }));
}

View file

@ -85,6 +85,8 @@ private static void InitDatabase(this ContainerBuilder container)
return c.Resolve<IObjectDbFactory>().Create();
}).As<IObjectDatabase>().SingleInstance();
container.RegisterGeneric(typeof(BasicRepository<>)).As(typeof(IBasicRepository<>));
container.RegisterType<DatabaseTarget>().WithParameter(ResolvedParameter.ForNamed<IDatabase>("DatabaseTarget"));
container.RegisterType<LogProvider>().WithParameter(ResolvedParameter.ForNamed<IDatabase>("LogProvider"));
}

View file

@ -20,14 +20,16 @@ public BasicRepository(IObjectDatabase objectDatabase)
protected IObjectDatabase ObjectDatabase { get; private set; }
protected IEnumerable<TModel> Queryable { get { return ObjectDatabase.AsQueryable<TModel>(); } }
public List<TModel> All()
{
return ObjectDatabase.AsQueryable<TModel>().ToList();
return Queryable.ToList();
}
public TModel Get(int id)
{
return ObjectDatabase.AsQueryable<TModel>().Single(c => c.OID == id);
return Queryable.Single(c => c.OID == id);
}
public TModel Add(TModel model)

View file

@ -12,10 +12,6 @@ protected override void MainDbUpgrade()
{
var objectDb = GetObjectDb();
var rootFolderRepo = new RootFolderRepository(objectDb);
using (var dataReader = Database.ExecuteQuery("SELECT * from RootDirs"))
{
var dirs = new List<RootFolder>();
@ -26,6 +22,7 @@ protected override void MainDbUpgrade()
}
objectDb.InsertMany(dirs);
}
//Database.RemoveTable("RootDirs");
}

View file

@ -620,7 +620,6 @@
<Compile Include="Repository\Series.cs" />
<Compile Include="CentralDispatch.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="RootFolders\RootFolderRepository.cs" />
<Compile Include="Tvdb\Tvdb.cs" />
<Compile Include="Tvdb\Tvdb.Sync.cs" />
<Compile Include="Tvdb\TvdbActor.cs" />

View file

@ -1,19 +0,0 @@
using NzbDrone.Core.Datastore;
using System.Linq;
namespace NzbDrone.Core.RootFolders
{
public interface IRootFolderRepository : IBasicRepository<RootFolder>
{
}
public class RootFolderRepository : BasicRepository<RootFolder>, IRootFolderRepository
{
public RootFolderRepository(IObjectDatabase objectDatabase)
: base(objectDatabase)
{
}
}
}

View file

@ -4,8 +4,8 @@
using System.IO;
using NLog;
using NzbDrone.Common;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.Providers;
using NzbDrone.Core.Repository;
namespace NzbDrone.Core.RootFolders
{
@ -21,11 +21,11 @@ public interface IRootFolderService
public class RootFolderService : IRootFolderService
{
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
private readonly IRootFolderRepository _rootFolderRepository;
private readonly IBasicRepository<RootFolder> _rootFolderRepository;
private readonly DiskProvider _diskProvider;
private readonly SeriesProvider _seriesProvider;
public RootFolderService(IRootFolderRepository rootFolderRepository, SeriesProvider seriesProvider, DiskProvider diskProvider)
public RootFolderService(IBasicRepository<RootFolder> rootFolderRepository, SeriesProvider seriesProvider, DiskProvider diskProvider)
{
_rootFolderRepository = rootFolderRepository;
_diskProvider = diskProvider;