|
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.
|