Update of /cvsroot/nhibernate/nhibernate/src/NHibernate.Test
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21350/nhibernate/src/NHibernate.Test
Modified Files:
MasterDetailTest.cs
Log Message:
Implemented Copy, enhanced versioning, support named query/sql-query
Index: MasterDetailTest.cs
===================================================================
RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate.Test/MasterDetailTest.cs,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -d -r1.20 -r1.21
*** MasterDetailTest.cs 28 Mar 2005 15:20:27 -0000 1.20
--- MasterDetailTest.cs 30 Mar 2005 16:28:11 -0000 1.21
***************
*** 52,64 ****
[Test]
- [Ignore( "Test not written" )]
public void Copy()
{
}
[Test]
- [Ignore( "Test not written" )]
public void CopyCascade()
{
}
--- 52,131 ----
[Test]
public void Copy()
{
+ Category catWA = new Category();
+ catWA.Name = "HSQL workaround";
+ Category cat = new Category();
+ cat.Name = "foo";
+ Category subCatBar = new Category();
+ subCatBar.Name = "bar";
+ Category subCatBaz = new Category();
+ subCatBaz.Name = "baz";
+ cat.Subcategories.Add( subCatBar );
+ cat.Subcategories.Add( subCatBaz );
+
+ ISession s = sessions.OpenSession();
+ s.Save( catWA );
+ s.Save( cat );
+ s.Flush();
+ s.Close();
+
+ cat.Name = "new foo";
+ subCatBar.Name = "new bar";
+ cat.Subcategories.Remove( subCatBaz );
+ Category newCat = new Category();
+ newCat.Name = "new";
+ cat.Subcategories.Add( newCat );
+ Category newSubCat = new Category();
+ newSubCat.Name = "new sub";
+ newCat.Subcategories.Add( newSubCat );
+
+ s = sessions.OpenSession();
+ s.SaveOrUpdateCopy( cat );
+ s.Flush();
+ s.Close();
+
+ s = sessions.OpenSession();
+ cat = (Category) s.CreateQuery( "from Category cat where cat.Name='new foo'").UniqueResult();
+ newSubCat = (Category) s.CreateQuery( "from Category cat where cat.Name='new sub'").UniqueResult();
+ newSubCat.Subcategories.Add( cat );
+ subCatBaz = (Category) s.SaveOrUpdateCopy( newSubCat, subCatBaz.Id );
+ Assert.IsTrue( subCatBaz.Name.Equals( "new sub" ) );
+ Assert.IsTrue( subCatBaz.Subcategories.Count == 1 && subCatBaz.Subcategories[0] == cat );
+ newSubCat.Subcategories.Remove( cat );
+ s.Delete( cat );
+ s.Delete( subCatBaz );
+ s.Delete( catWA );
+ s.Flush();
+ s.Close();
}
[Test]
public void CopyCascade()
{
+ ISession s = sessions.OpenSession();
+ Category child = new Category();
+ child.Name = "child";
+ s.Save( child );
+ s.Flush();
+ s.Close();
+
+ s = sessions.OpenSession();
+ Category parent = new Category();
+ parent.Name = "parent";
+ parent.Subcategories.Add( child );
+ child.Name = "child2";
+
+ // Save parent and cascade update detached child
+ Category persistentParent = (Category) s.SaveOrUpdateCopy( parent );
+ Assert.IsTrue( persistentParent.Subcategories.Count == 1 );
+ Assert.AreEqual( ( (Category) persistentParent.Subcategories[ 0 ] ).Name, "child2" );
+ s.Flush();
+ s.Close();
+
+ s = sessions.OpenSession();
+ s.Delete( parent );
+ s.Flush();
+ s.Close();
}
|