@ -5,7 +5,6 @@ using FizzWare.NBuilder;
using FluentAssertions ;
using NUnit.Framework ;
using NzbDrone.Core.Datastore ;
using NzbDrone.Core.Repository ;
using NzbDrone.Core.Test.Framework ;
namespace NzbDrone.Core.Test.Datastore
@ -13,18 +12,18 @@ namespace NzbDrone.Core.Test.Datastore
[TestFixture]
public class ObjectDatabaseFixture : ObjectDbTest
{
private ChildModel childModel;
private ParentModel P arentModel;
private ChildModel _ childModel;
private ParentModel _p arentModel;
[SetUp]
public void SetUp ( )
{
childModel = Builder < ChildModel >
_ childModel = Builder < ChildModel >
. CreateNew ( )
. With ( s = > s . Id = 0 )
. Build ( ) ;
P arentModel = Builder < ParentModel >
_p arentModel = Builder < ParentModel >
. CreateNew ( )
. With ( e = > e . Id = 0 )
. Build ( ) ;
@ -34,22 +33,22 @@ namespace NzbDrone.Core.Test.Datastore
[Test]
public void should_be_able_to_write_to_database ( )
{
Db . Insert ( childModel) ;
Db . Insert ( _ childModel) ;
Db . AsQueryable < ChildModel > ( ) . Should ( ) . HaveCount ( 1 ) ;
}
[Test]
public void double_insert_should_fail ( )
{
Db . Insert ( childModel) ;
Assert . Throws < InvalidOperationException > ( ( ) = > Db . Insert ( childModel) ) ;
Db . Insert ( _ childModel) ;
Assert . Throws < InvalidOperationException > ( ( ) = > Db . Insert ( _ childModel) ) ;
}
[Test]
public void update_item_with_root_index_0_should_faile ( )
{
childModel. Id = 0 ;
Assert . Throws < InvalidOperationException > ( ( ) = > Db . Update ( childModel) ) ;
_ childModel. Id = 0 ;
Assert . Throws < InvalidOperationException > ( ( ) = > Db . Update ( _ childModel) ) ;
}
@ -64,11 +63,11 @@ namespace NzbDrone.Core.Test.Datastore
[Test]
public void should_not_store_dirty_data_in_cache ( )
{
Db . Insert ( P arentModel) ;
Db . Insert ( _p arentModel) ;
Db . AsQueryable < ParentModel > ( ) . Single ( ) . Child . Should ( ) . BeNull ( ) ;
P arentModel. Child = Builder < ChildModel > . CreateNew ( ) . Build ( ) ;
_p arentModel. Child = Builder < ChildModel > . CreateNew ( ) . Build ( ) ;
Db . AsQueryable < ParentModel > ( ) . Single ( ) . Child . Should ( ) . BeNull ( ) ;
}
@ -76,9 +75,9 @@ namespace NzbDrone.Core.Test.Datastore
[Test]
public void should_store_nested_objects ( )
{
P arentModel. Child = childModel;
_p arentModel. Child = _ childModel;
Db . Insert ( P arentModel) ;
Db . Insert ( _p arentModel) ;
Db . AsQueryable < ParentModel > ( ) . Should ( ) . HaveCount ( 1 ) ;
Db . AsQueryable < ParentModel > ( ) . Single ( ) . Child . Should ( ) . NotBeNull ( ) ;
@ -87,16 +86,16 @@ namespace NzbDrone.Core.Test.Datastore
[Test]
public void should_update_nested_objects ( )
{
P arentModel. Child = Builder < ChildModel >
_p arentModel. Child = Builder < ChildModel >
. CreateNew ( )
. With ( s = > s . Id = 0 )
. Build ( ) ;
Db . Insert ( P arentModel) ;
Db . Insert ( _p arentModel) ;
P arentModel. Child . A = "UpdatedTitle" ;
_p arentModel. Child . A = "UpdatedTitle" ;
Db . Update ( P arentModel) ;
Db . Update ( _p arentModel) ;
Db . AsQueryable < ParentModel > ( ) . Should ( ) . HaveCount ( 1 ) ;
Db . AsQueryable < ParentModel > ( ) . Single ( ) . Child . Should ( ) . NotBeNull ( ) ;
@ -106,19 +105,19 @@ namespace NzbDrone.Core.Test.Datastore
[Test]
public void new_objects_should_get_id ( )
{
childModel. Id = 0 ;
Db . Insert ( childModel) ;
childModel. Id . Should ( ) . NotBe ( 0 ) ;
_ childModel. Id = 0 ;
Db . Insert ( _ childModel) ;
_ childModel. Id . Should ( ) . NotBe ( 0 ) ;
}
[Test]
public void new_object_should_get_new_id ( )
{
childModel. Id = 0 ;
Db . Insert ( childModel) ;
_ childModel. Id = 0 ;
Db . Insert ( _ childModel) ;
Db . AsQueryable < ChildModel > ( ) . Should ( ) . HaveCount ( 1 ) ;
childModel. Id . Should ( ) . Be ( 1 ) ;
_ childModel. Id . Should ( ) . Be ( 1 ) ;
}
@ -138,26 +137,62 @@ namespace NzbDrone.Core.Test.Datastore
[Test]
public void should_have_id_when_returned_from_database ( )
{
childModel. Id = 0 ;
Db . Insert ( childModel) ;
_ childModel. Id = 0 ;
Db . Insert ( _ childModel) ;
var item = Db . AsQueryable < ChildModel > ( ) ;
item . Should ( ) . HaveCount ( 1 ) ;
item . First ( ) . Id . Should ( ) . NotBe ( 0 ) ;
item . First ( ) . Id . Should ( ) . BeLessThan ( 100 ) ;
item . First ( ) . Id . Should ( ) . Be ( childModel. Id ) ;
item . First ( ) . Id . Should ( ) . Be ( _ childModel. Id ) ;
}
[Test]
public void should_be_able_to_find_object_by_id ( )
{
Db . Insert ( childModel) ;
var item = Db . AsQueryable < ChildModel > ( ) . Single ( c = > c . Id = = childModel. Id ) ;
Db . Insert ( _ childModel) ;
var item = Db . AsQueryable < ChildModel > ( ) . Single ( c = > c . Id = = _ childModel. Id ) ;
item . Id . Should ( ) . NotBe ( 0 ) ;
item . Id . Should ( ) . Be ( childModel. Id ) ;
item . Id . Should ( ) . Be ( _ childModel. Id ) ;
}
[Test]
public void deleting_child_model_directly_should_set_link_to_null ( )
{
_parentModel . Child = _childModel ;
Db . Insert ( _childModel ) ;
Db . Insert ( _parentModel ) ;
Db . AsQueryable < ParentModel > ( ) . Single ( ) . Child . Should ( ) . NotBeNull ( ) ;
Db . Delete ( _childModel ) ;
Db . AsQueryable < ParentModel > ( ) . Single ( ) . Child . Should ( ) . BeNull ( ) ;
}
[Test]
public void deleting_child_model_directly_should_remove_item_from_child_list ( )
{
var children = Builder < ChildModel > . CreateListOfSize ( 5 )
. All ( )
. With ( c = > c . Id = 0 )
. Build ( ) ;
_parentModel . ChildList = children . ToList ( ) ;
Db . Insert ( _parentModel ) ;
Db . AsQueryable < ParentModel > ( ) . Single ( ) . ChildList . Should ( ) . HaveSameCount ( children ) ;
Db . Delete ( children [ 1 ] ) ;
Db . AsQueryable < ParentModel > ( ) . Single ( ) . ChildList . Should ( ) . HaveCount ( 4 ) ;
}
[Test]
public void should_be_able_to_read_unknown_type ( )
{
@ -183,11 +218,11 @@ namespace NzbDrone.Core.Test.Datastore
public class ParentModel : ModelBase
{
public ChildModel Child { get ; set ; }
public List < ChildModel > ChildList { get ; set ; }
}
public class ChildModel : ModelBase
{
public String A { get ; set ; }
public int B { get ; set ; }
public int C { get ; set ; }