From 9758768be683010c493789427c80bc881de31728 Mon Sep 17 00:00:00 2001 From: Roger Kratz Date: Tue, 12 Nov 2013 13:05:00 +0100 Subject: [PATCH] Failing test for NH3570. One test for unidirectional onetomany and one test for bidirectional onetomany - both fails. --- .../NHSpecificTest/NH3570/BiFixture.cs | 51 +++++++++++++++++++ .../NHSpecificTest/NH3570/Mappings.hbm.xml | 36 +++++++++++++ .../NHSpecificTest/NH3570/Model.cs | 46 +++++++++++++++++ .../NHSpecificTest/NH3570/UniFixture.cs | 51 +++++++++++++++++++ src/NHibernate.Test/NHibernate.Test.csproj | 4 ++ 5 files changed, 188 insertions(+) create mode 100644 src/NHibernate.Test/NHSpecificTest/NH3570/BiFixture.cs create mode 100644 src/NHibernate.Test/NHSpecificTest/NH3570/Mappings.hbm.xml create mode 100644 src/NHibernate.Test/NHSpecificTest/NH3570/Model.cs create mode 100644 src/NHibernate.Test/NHSpecificTest/NH3570/UniFixture.cs diff --git a/src/NHibernate.Test/NHSpecificTest/NH3570/BiFixture.cs b/src/NHibernate.Test/NHSpecificTest/NH3570/BiFixture.cs new file mode 100644 index 00000000000..6e75293c049 --- /dev/null +++ b/src/NHibernate.Test/NHSpecificTest/NH3570/BiFixture.cs @@ -0,0 +1,51 @@ +using System; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.NHSpecificTest.NH3570 +{ + [TestFixture] + public class BiFixture : BugTestCase + { + private Guid id; + + [Test] + [KnownBug("NH-3570")] + public void ShouldNotSaveRemoveChild() + { + var parent = new BiParent(); + parent.AddChild(new BiChild()); + using (var s = OpenSession()) + { + using (var tx = s.BeginTransaction()) + { + id = (Guid)s.Save(parent); + parent.Children.Clear(); + parent.AddChild(new BiChild()); + tx.Commit(); + } + } + using (var s = OpenSession()) + { + using (s.BeginTransaction()) + { + s.Get(id).Children.Count.Should().Be.EqualTo(1); + s.CreateCriteria().List().Count.Should().Be.EqualTo(1); + } + } + } + + protected override void OnTearDown() + { + using (var s = OpenSession()) + { + using (var tx = s.BeginTransaction()) + { + s.CreateQuery("delete from BiChild").ExecuteUpdate(); + s.CreateQuery("delete from BiParent").ExecuteUpdate(); + tx.Commit(); + } + } + } + } +} \ No newline at end of file diff --git a/src/NHibernate.Test/NHSpecificTest/NH3570/Mappings.hbm.xml b/src/NHibernate.Test/NHSpecificTest/NH3570/Mappings.hbm.xml new file mode 100644 index 00000000000..f42beb8ea77 --- /dev/null +++ b/src/NHibernate.Test/NHSpecificTest/NH3570/Mappings.hbm.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/NHibernate.Test/NHSpecificTest/NH3570/Model.cs b/src/NHibernate.Test/NHSpecificTest/NH3570/Model.cs new file mode 100644 index 00000000000..381c6ec08c1 --- /dev/null +++ b/src/NHibernate.Test/NHSpecificTest/NH3570/Model.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH3570 +{ + public class UniParent + { + public UniParent() + { + Children = new List(); + } + + public virtual Guid Id { get; set; } + public virtual IList Children { get; set; } + public virtual int Version { get; set; } + } + + public class UniChild + { + public virtual Guid Id { get; set; } + } + + public class BiParent + { + public BiParent() + { + Children = new List(); + } + + public virtual Guid Id { get; set; } + public virtual IList Children { get; set; } + public virtual int Version { get; set; } + + public virtual void AddChild(BiChild child) + { + child.Parent = this; + Children.Add(child); + } + } + + public class BiChild + { + public virtual Guid Id { get; set; } + public virtual BiParent Parent { get; set; } + } +} \ No newline at end of file diff --git a/src/NHibernate.Test/NHSpecificTest/NH3570/UniFixture.cs b/src/NHibernate.Test/NHSpecificTest/NH3570/UniFixture.cs new file mode 100644 index 00000000000..749eddbfe42 --- /dev/null +++ b/src/NHibernate.Test/NHSpecificTest/NH3570/UniFixture.cs @@ -0,0 +1,51 @@ +using System; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.NHSpecificTest.NH3570 +{ + [TestFixture] + public class UniFixture : BugTestCase + { + private Guid id; + + [Test] + [KnownBug("NH-3570")] + public void ShouldNotSaveRemoveChild() + { + var parent = new UniParent(); + parent.Children.Add(new UniChild()); + using (var s = OpenSession()) + { + using (var tx = s.BeginTransaction()) + { + id = (Guid) s.Save(parent); + parent.Children.Clear(); + parent.Children.Add(new UniChild()); + tx.Commit(); + } + } + using (var s = OpenSession()) + { + using (s.BeginTransaction()) + { + s.Get(id).Children.Count.Should().Be.EqualTo(1); + s.CreateCriteria().List().Count.Should().Be.EqualTo(1); + } + } + } + + protected override void OnTearDown() + { + using (var s = OpenSession()) + { + using (var tx = s.BeginTransaction()) + { + s.CreateQuery("delete from UniChild").ExecuteUpdate(); + s.CreateQuery("delete from UniParent").ExecuteUpdate(); + tx.Commit(); + } + } + } + } +} \ No newline at end of file diff --git a/src/NHibernate.Test/NHibernate.Test.csproj b/src/NHibernate.Test/NHibernate.Test.csproj index 962022b5487..e66b945997e 100644 --- a/src/NHibernate.Test/NHibernate.Test.csproj +++ b/src/NHibernate.Test/NHibernate.Test.csproj @@ -690,6 +690,9 @@ + + + @@ -3054,6 +3057,7 @@ +