From: <fab...@us...> - 2009-05-15 04:38:12
|
Revision: 4310 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4310&view=rev Author: fabiomaulo Date: 2009-05-15 04:38:07 +0000 (Fri, 15 May 2009) Log Message: ----------- Test NH1338 (if it was real, was fixed in some moment) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1388/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1388/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1388/Mappings.hbm.xml Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1388/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1388/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1388/Fixture.cs 2009-05-15 04:38:07 UTC (rev 4310) @@ -0,0 +1,129 @@ +using System.Collections.Generic; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1388 +{ + public class Student + { + private int _id; + private readonly IDictionary<Subject, Major> _majors = new Dictionary<Subject, Major>(); + + public virtual int Id + { + get { return _id; } + } + + public virtual IDictionary<Subject, Major> Majors + { + get { return _majors; } + } + } + + public class Subject + { + public int Id { get; set; } + + public string Title { get; set; } + } + + public class Major + { + public string Note { get; set; } + } + + [TestFixture] + public class Fixture : BugTestCase + { + [Test] + public void BagTest() + { + int studentId = 1; + + // Set major. + using (ISession session = OpenSession()) + { + ITransaction t = session.BeginTransaction(); + var student = new Student(); + var subject1 = new Subject {Id = 1}; + var subject2 = new Subject {Id = 2}; + + // Create major objects. + var major1 = new Major {Note = ""}; + + var major2 = new Major {Note = ""}; + + // Set major objects. + student.Majors[subject1] = major1; + student.Majors[subject2] = major2; + + session.Save(subject1); + session.Save(subject2); + session.Save(student); + + session.Flush(); + t.Commit(); + } + // Remove major for subject 2. + using (ISession session = OpenSession()) + { + ITransaction t = session.BeginTransaction(); + var student = session.Get<Student>(studentId); + var subject2 = session.Get<Subject>(2); + + // Remove major. + student.Majors.Remove(subject2); + + session.Flush(); + t.Commit(); + } + + // Get major for subject 2. + using (ISession session = OpenSession()) + { + ITransaction t = session.BeginTransaction(); + var student = session.Get<Student>(studentId); + var subject2 = session.Get<Subject>(2); + + Assert.IsNotNull(subject2); + + // Major for subject 2 should have been removed. + Assert.IsFalse(student.Majors.ContainsKey(subject2)); + + t.Commit(); + } + + // Remove all - NHibernate will now succeed in removing all. + using (ISession session = OpenSession()) + { + ITransaction t = session.BeginTransaction(); + var student = session.Get<Student>(studentId); + student.Majors.Clear(); + session.Flush(); + t.Commit(); + } + } + + protected override void OnTearDown() + { + // clean up the database + using (ISession session = OpenSession()) + { + session.BeginTransaction(); + foreach (var student in session.CreateCriteria(typeof (Student)).List<Student>()) + { + session.Delete(student); + } + foreach (var subject in session.CreateCriteria(typeof (Subject)).List<Subject>()) + { + session.Delete(subject); + } + session.Transaction.Commit(); + } + } + + protected override string CacheConcurrencyStrategy + { + get { return null; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1388/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1388/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1388/Mappings.hbm.xml 2009-05-15 04:38:07 UTC (rev 4310) @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping + xmlns="urn:nhibernate-mapping-2.2" + default-lazy="true" + default-cascade="save-update" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1388"> + + <class name="Student" table="STUDENT" lazy="false"> + + <id name="Id" column="STUDENT_ID" type="int" access="nosetter.camelcase-underscore"> + <generator class="native" > + <param name="sequence">STUDENT_ID_SEQUENCE</param> + </generator> + </id> + + <map name="Majors" + cascade="all" + inverse="false" + access="field.camelcase-underscore" + fetch="select" + lazy="true" + batch-size="100" + table="MAJOR"> + <key column="STUDENT_ID" foreign-key="STUDENT_ID" /> + <index-many-to-many column="SUBJECT_ID" class="Subject" /> + <composite-element class="Major"> + <property name="Note" column="NOTE" /> + </composite-element> + </map> + + </class> + + <class name="Subject" table="SUBJECT" lazy="false"> + + <id name="Id" column="SUBJECT_ID" type="int"> + <generator class="assigned" /> + </id> + + <property name="Title" column="TITLE" /> + </class> + +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-15 01:28:03 UTC (rev 4309) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-15 04:38:07 UTC (rev 4310) @@ -331,6 +331,7 @@ <Compile Include="MappingTest\Wicked.cs" /> <Compile Include="NHSpecificTest\ElementsEnums\IntEnumsBagFixture.cs" /> <Compile Include="NHSpecificTest\ElementsEnums\Something.cs" /> + <Compile Include="NHSpecificTest\NH1388\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1574\Principal.cs" /> <Compile Include="NHSpecificTest\NH1574\SpecializedPrincipal.cs" /> <Compile Include="NHSpecificTest\NH1574\SpecializedTeaml.cs" /> @@ -1784,6 +1785,7 @@ <EmbeddedResource Include="BulkManipulation\SimpleClass.hbm.xml" /> <EmbeddedResource Include="Ado\VerySimple.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1388\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\ElementsEnums\SimpleWithEnums.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1574\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1776\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |