got basic relationships working
added support for embedded documents.
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using FizzWare.NBuilder;
|
||||
using FluentAssertions;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Core.Datastore;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
using NzbDrone.Core.Tv;
|
||||
|
||||
namespace NzbDrone.Core.Test.Datastore
|
||||
{
|
||||
[TestFixture]
|
||||
public class DatabaseJoinFixture : DbTest<BasicRepository<Series>, Series>
|
||||
{
|
||||
[Test]
|
||||
[Explicit]
|
||||
public void benchmark()
|
||||
{
|
||||
var series = Builder<Series>.CreateNew()
|
||||
.With(c => c.Id = 0)
|
||||
.Build();
|
||||
|
||||
Marr.Data.MapRepository.Instance.EnableTraceLogging = false;
|
||||
|
||||
Subject.Insert(series);
|
||||
|
||||
var covers = Builder<MediaCover.MediaCover>.CreateListOfSize(5)
|
||||
.All()
|
||||
.With(c => c.SeriesId = series.Id)
|
||||
.With(c => c.Id = 0)
|
||||
.Build()
|
||||
.ToList();
|
||||
|
||||
Db.InsertMany(covers);
|
||||
|
||||
var loadedSeries = Subject.SingleOrDefault();
|
||||
|
||||
var sw = Stopwatch.StartNew();
|
||||
for (int i = 0; i < 10000; i++)
|
||||
{
|
||||
loadedSeries = Subject.SingleOrDefault();
|
||||
var list = loadedSeries.Covers.Value;
|
||||
}
|
||||
|
||||
sw.Stop();
|
||||
|
||||
Console.WriteLine(sw.Elapsed);
|
||||
|
||||
loadedSeries.Covers.Value.Should().HaveSameCount(covers);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void one_to_many()
|
||||
{
|
||||
var series = Builder<Series>.CreateNew()
|
||||
.With(c => c.Id = 0)
|
||||
.Build();
|
||||
|
||||
Subject.Insert(series);
|
||||
|
||||
var covers = Builder<MediaCover.MediaCover>.CreateListOfSize(5)
|
||||
.All()
|
||||
.With(c => c.SeriesId = series.Id)
|
||||
.With(c => c.Id = 0)
|
||||
.Build()
|
||||
.ToList();
|
||||
|
||||
Db.InsertMany(covers);
|
||||
|
||||
var loadedSeries = Subject.SingleOrDefault();
|
||||
loadedSeries = Subject.SingleOrDefault();
|
||||
|
||||
loadedSeries.Covers.Value.Should().HaveSameCount(covers);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void embeded_document_as_json()
|
||||
{
|
||||
var episode = Builder<Episode>.CreateNew()
|
||||
.With(c => c.Id = 0)
|
||||
.Build();
|
||||
|
||||
Db.Insert(episode);
|
||||
|
||||
|
||||
var history = Builder<History.History>.CreateNew()
|
||||
.With(c => c.Id = 0)
|
||||
.With(c => c.EpisodeId = episode.Id)
|
||||
.With(c => c.Quality = new QualityModel())
|
||||
.Build();
|
||||
|
||||
Db.Insert(history);
|
||||
Db.Single<History.History>().Episode.Value.Should().NotBeNull();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -124,6 +124,7 @@ namespace NzbDrone.Core.Test.Framework
|
||||
void InsertMany<T>(IEnumerable<T> items) where T : ModelBase, new();
|
||||
void Insert<T>(T item) where T : ModelBase, new();
|
||||
IEnumerable<T> All<T>() where T : ModelBase, new();
|
||||
T Single<T>() where T : ModelBase, new();
|
||||
void Update<T>(T childModel) where T : ModelBase, new();
|
||||
void Delete<T>(T childModel) where T : ModelBase, new();
|
||||
}
|
||||
@@ -152,6 +153,11 @@ namespace NzbDrone.Core.Test.Framework
|
||||
return new BasicRepository<T>(_dbConnection).All();
|
||||
}
|
||||
|
||||
public T Single<T>() where T : ModelBase, new()
|
||||
{
|
||||
return All<T>().SingleOrDefault();
|
||||
}
|
||||
|
||||
public void Update<T>(T childModel) where T : ModelBase, new()
|
||||
{
|
||||
new BasicRepository<T>(_dbConnection).Update(childModel);
|
||||
|
||||
@@ -73,12 +73,13 @@
|
||||
<Reference Include="FizzWare.NBuilder, Version=3.0.1.0, Culture=neutral, PublicKeyToken=5651b03e12e42c12, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NBuilder.3.0.1.1\lib\FizzWare.NBuilder.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="FluentAssertions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
|
||||
<Reference Include="FluentAssertions, Version=2.0.1.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\FluentAssertions.2.0.0.1\lib\net40\FluentAssertions.dll</HintPath>
|
||||
<HintPath>..\packages\FluentAssertions.2.0.1\lib\net40\FluentAssertions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Marr.Data">
|
||||
<HintPath>..\packages\MarrDataMapper.3.17.4747.34302\lib\Marr.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="FluentMigrator">
|
||||
<HintPath>..\packages\FluentMigrator.1.0.6.0\lib\40\FluentMigrator.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -128,6 +129,13 @@
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Data.Entity" />
|
||||
<Reference Include="System.Data.SQLite, Version=1.0.84.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\System.Data.SQLite.1.0.84.0\lib\net40\System.Data.SQLite.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.SQLite.Linq">
|
||||
<HintPath>..\packages\System.Data.SQLite.1.0.84.0\lib\net40\System.Data.SQLite.Linq.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Transactions" />
|
||||
@@ -136,6 +144,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Datastore\BasicRepositoryFixture.cs" />
|
||||
<Compile Include="Datastore\DatabaseJoinFixture.cs" />
|
||||
<Compile Include="Datastore\ObjectDatabaseFixture.cs" />
|
||||
<Compile Include="Framework\CoreTest.cs" />
|
||||
<Compile Include="Framework\DbTest.cs" />
|
||||
@@ -404,7 +413,7 @@
|
||||
</PreBuildEvent>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>xcopy /s /y "$(SolutionDir)\Libraries\Sqlite\x86\*.*" "$(TargetDir)"</PostBuildEvent>
|
||||
<PostBuildEvent>xcopy /s /y "$(SolutionDir)\Libraries\Sqlite\*.*" "$(TargetDir)"</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
|
||||
+1
-1
@@ -51,7 +51,7 @@ namespace NzbDrone.Core.Test.ProviderTests.TvRageMappingProviderTests
|
||||
.Setup(s => s.GetEpisode(_series.Id, 1, 1))
|
||||
.Returns(_episode);
|
||||
|
||||
Mocker.GetMock<SceneMappingService>()
|
||||
Mocker.GetMock<ISceneMappingService>()
|
||||
.Setup(s => s.GetCleanName(_series.Id))
|
||||
.Returns("");
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<package id="Autofac" version="3.0.1" targetFramework="net40" />
|
||||
<package id="AutoMoq" version="1.6.1" targetFramework="net40" />
|
||||
<package id="CommonServiceLocator" version="1.0" targetFramework="net40" />
|
||||
<package id="FluentAssertions" version="2.0.0.1" targetFramework="net40" />
|
||||
<package id="FluentAssertions" version="2.0.1" targetFramework="net40" />
|
||||
<package id="FluentMigrator" version="1.0.6.0" targetFramework="net40" />
|
||||
<package id="Moq" version="4.0.10827" />
|
||||
<package id="NBuilder" version="3.0.1.1" />
|
||||
@@ -13,5 +13,6 @@
|
||||
<package id="NUnit" version="2.6.2" targetFramework="net40" />
|
||||
<package id="Prowlin" version="0.9.4456.26422" targetFramework="net40" />
|
||||
<package id="SignalR.Server" version="0.5.3" targetFramework="net40" />
|
||||
<package id="System.Data.SQLite" version="1.0.84.0" targetFramework="net40" />
|
||||
<package id="Unity" version="2.1.505.2" targetFramework="net40" />
|
||||
</packages>
|
||||
Reference in New Issue
Block a user