|
From: <fab...@us...> - 2008-08-18 19:58:39
|
Revision: 3719
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3719&view=rev
Author: fabiomaulo
Date: 2008-08-18 19:58:38 +0000 (Mon, 18 Aug 2008)
Log Message:
-----------
Delete Transients Test
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/Deletetransient/
trunk/nhibernate/src/NHibernate.Test/Deletetransient/Address.cs
trunk/nhibernate/src/NHibernate.Test/Deletetransient/DeleteTransientEntityTest.cs
trunk/nhibernate/src/NHibernate.Test/Deletetransient/Person.cs
trunk/nhibernate/src/NHibernate.Test/Deletetransient/Person.hbm.xml
Added: trunk/nhibernate/src/NHibernate.Test/Deletetransient/Address.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Deletetransient/Address.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Deletetransient/Address.cs 2008-08-18 19:58:38 UTC (rev 3719)
@@ -0,0 +1,25 @@
+namespace NHibernate.Test.Deletetransient
+{
+ public class Address
+ {
+ private long id;
+ private string info;
+ public Address() {}
+ public Address(string info)
+ {
+ this.info = info;
+ }
+
+ public virtual long Id
+ {
+ get { return id; }
+ set { id = value; }
+ }
+
+ public virtual string Info
+ {
+ get { return info; }
+ set { info = value; }
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/Deletetransient/DeleteTransientEntityTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Deletetransient/DeleteTransientEntityTest.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Deletetransient/DeleteTransientEntityTest.cs 2008-08-18 19:58:38 UTC (rev 3719)
@@ -0,0 +1,111 @@
+using System.Collections;
+using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
+
+namespace NHibernate.Test.Deletetransient
+{
+ [TestFixture]
+ public class DeleteTransientEntityTest : TestCase
+ {
+ protected override string MappingsAssembly
+ {
+ get { return "NHibernate.Test"; }
+ }
+
+ protected override IList Mappings
+ {
+ get { return new string[] {"Deletetransient.Person.hbm.xml"}; }
+ }
+
+ [Test]
+ public void TransientEntityDeletionNoCascades()
+ {
+ ISession s = OpenSession();
+ ITransaction t = s.BeginTransaction();
+ s.Delete(new Address());
+ t.Commit();
+ s.Close();
+ }
+
+ [Test]
+ public void TransientEntityDeletionCascadingToTransientAssociation()
+ {
+ ISession s = OpenSession();
+ ITransaction t = s.BeginTransaction();
+ Person p = new Person();
+ p.Addresses.Add(new Address());
+ s.Delete(p);
+ t.Commit();
+ s.Close();
+ }
+
+ [Test]
+ public void TransientEntityDeleteCascadingToCircularity()
+ {
+ ISession s = OpenSession();
+ ITransaction t = s.BeginTransaction();
+ Person p1 = new Person();
+ Person p2 = new Person();
+ p1.Friends.Add(p2);
+ p2.Friends.Add(p1);
+ s.Delete(p1);
+ t.Commit();
+ s.Close();
+ }
+
+ [Test]
+ public void TransientEntityDeletionCascadingToDetachedAssociation()
+ {
+ ISession s = OpenSession();
+ ITransaction t = s.BeginTransaction();
+ Address address = new Address();
+ address.Info = "123 Main St.";
+ s.Save(address);
+ t.Commit();
+ s.Close();
+
+ s = OpenSession();
+ t = s.BeginTransaction();
+ Person p = new Person();
+ p.Addresses.Add(address);
+ s.Delete(p);
+ t.Commit();
+ s.Close();
+
+ s = OpenSession();
+ t = s.BeginTransaction();
+ long count = s.CreateQuery("select count(*) from Address").List<long>()[0];
+ Assert.That(count, Is.EqualTo(0L), "delete not cascaded properly across transient entity");
+ t.Commit();
+ s.Close();
+ }
+
+ [Test]
+ public void TransientEntityDeletionCascadingToPersistentAssociation()
+ {
+ ISession s = OpenSession();
+ ITransaction t = s.BeginTransaction();
+ Address address = new Address();
+ address.Info = "123 Main St.";
+ s.Save(address);
+ t.Commit();
+ s.Close();
+
+ s = OpenSession();
+ t = s.BeginTransaction();
+ address = s.Get<Address>(address.Id);
+ Person p = new Person();
+ p.Addresses.Add(address);
+ s.Delete(p);
+ t.Commit();
+ s.Close();
+
+ s = OpenSession();
+ t = s.BeginTransaction();
+ long count = s.CreateQuery("select count(*) from Address").List<long>()[0];
+ Assert.That(count, Is.EqualTo(0L), "delete not cascaded properly across transient entity");
+ t.Commit();
+ s.Close();
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/Deletetransient/Person.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Deletetransient/Person.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Deletetransient/Person.cs 2008-08-18 19:58:38 UTC (rev 3719)
@@ -0,0 +1,42 @@
+using System.Collections.Generic;
+using Iesi.Collections.Generic;
+
+namespace NHibernate.Test.Deletetransient
+{
+ public class Person
+ {
+ private long id;
+ private string name;
+ private ISet<Address> addresses = new HashedSet<Address>();
+ private IList<Person> friends = new List<Person>();
+ public Person() {}
+ public Person(string name)
+ {
+ this.name = name;
+ }
+
+ public virtual long Id
+ {
+ get { return id; }
+ set { id = value; }
+ }
+
+ public virtual string Name
+ {
+ get { return name; }
+ set { name = value; }
+ }
+
+ public virtual ISet<Address> Addresses
+ {
+ get { return addresses; }
+ set { addresses = value; }
+ }
+
+ public virtual IList<Person> Friends
+ {
+ get { return friends; }
+ set { friends = value; }
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/Deletetransient/Person.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Deletetransient/Person.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Deletetransient/Person.hbm.xml 2008-08-18 19:58:38 UTC (rev 3719)
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.Deletetransient">
+
+ <class name="Person" table="T_PERSON">
+ <id name="Id" type="long">
+ <generator class="increment"/>
+ </id>
+ <property name="Name" type="string"/>
+ <set name="Addresses" lazy="true" inverse="false" cascade="all">
+ <key column="PERSON_ID"/>
+ <one-to-many class="Address"/>
+ </set>
+ <bag name="Friends" lazy="true" inverse="false" cascade="all" table="T_FRIENDS">
+ <key column="FRIEND_ID_1"/>
+ <many-to-many class="Person" column="FRIEND_ID_2"/>
+ </bag>
+ </class>
+
+ <class name="Address" table="T_ADDRESS">
+ <id name="Id" type="long">
+ <generator class="increment"/>
+ </id>
+ <property name="Info" type="string"/>
+ </class>
+
+</hibernate-mapping>
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-08-18 19:12:18 UTC (rev 3718)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-08-18 19:58:38 UTC (rev 3719)
@@ -127,6 +127,9 @@
<Compile Include="Criteria\Student.cs" />
<Compile Include="Criteria\StudentDTO.cs" />
<Compile Include="DebugConnectionProvider.cs" />
+ <Compile Include="Deletetransient\Address.cs" />
+ <Compile Include="Deletetransient\DeleteTransientEntityTest.cs" />
+ <Compile Include="Deletetransient\Person.cs" />
<Compile Include="DialectTest\DB2DialectFixture.cs" />
<Compile Include="DialectTest\DialectFixture.cs" />
<Compile Include="DialectTest\FirebirdDialectFixture.cs" />
@@ -1419,6 +1422,7 @@
<EmbeddedResource Include="CompositeId\Product.hbm.xml" />
<EmbeddedResource Include="Cascade\Job.hbm.xml" />
<EmbeddedResource Include="Cascade\JobBatch.hbm.xml" />
+ <EmbeddedResource Include="Deletetransient\Person.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
<EmbeddedResource Include="Extralazy\UserGroup.hbm.xml" />
<EmbeddedResource Include="Naturalid\Immutable\User.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|