Skip to content

Commit fae3309

Browse files
committed
NHE-164: Failing, ignored test for bug
1 parent d728386 commit fae3309

File tree

4 files changed

+151
-0
lines changed

4 files changed

+151
-0
lines changed

Src/NHibernate.Envers.Tests/NHibernate.Envers.Tests.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@
128128
<Compile Include="NetSpecific\Integration\BidirectionalList\DifferentAccessTest\BidirectionalListWithDifferentAccessTest.cs" />
129129
<Compile Include="NetSpecific\Integration\BidirectionalList\DifferentAccessTest\Child.cs" />
130130
<Compile Include="NetSpecific\Integration\BidirectionalList\DifferentAccessTest\Parent.cs" />
131+
<Compile Include="NetSpecific\Integration\BidirectionalList\InverseFalse\Fixture.cs" />
132+
<Compile Include="NetSpecific\Integration\BidirectionalList\InverseFalse\Model.cs" />
131133
<Compile Include="NetSpecific\Integration\Component\BaseClassComponent.cs" />
132134
<Compile Include="NetSpecific\Integration\Component\BaseClassOwner.cs" />
133135
<Compile Include="NetSpecific\Integration\Component\DerivedClassComponent.cs" />
@@ -804,6 +806,7 @@
804806
<Compile Include="ValidityTestBase.cs" />
805807
</ItemGroup>
806808
<ItemGroup>
809+
<EmbeddedResource Include="NetSpecific\Integration\BidirectionalList\InverseFalse\Mapping.hbm.xml" />
807810
<EmbeddedResource Include="NetSpecific\Integration\BidirectionalList\DifferentAccessTest\Mapping.hbm.xml" />
808811
<EmbeddedResource Include="NetSpecific\Integration\ModifiedFlags\CollectionItemChangingParent\Mapping.hbm.xml" />
809812
<EmbeddedResource Include="NetSpecific\Integration\MultiLevelInheritance\Mapping.hbm.xml" />
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
using NUnit.Framework;
2+
using SharpTestsEx;
3+
4+
namespace NHibernate.Envers.Tests.NetSpecific.Integration.BidirectionalList.InverseFalse
5+
{
6+
[Ignore("NHE-164")]
7+
public class Fixture : TestBase
8+
{
9+
private int parent_id;
10+
private int child1_id;
11+
private int child2_id;
12+
13+
public Fixture(string strategyType) : base(strategyType)
14+
{
15+
}
16+
17+
protected override void Initialize()
18+
{
19+
var parent = new Parent();
20+
var child1 = new Child {Parent = parent};
21+
var child2 = new Child { Parent = parent };
22+
using(var tx = Session.BeginTransaction())
23+
{
24+
parent_id = (int) Session.Save(parent);
25+
parent.Children.Add(child1);
26+
parent.Children.Add(child2);
27+
child1_id = (int)Session.Save(child1);
28+
child2_id = (int)Session.Save(child2);
29+
tx.Commit();
30+
}
31+
using(var tx =Session.BeginTransaction())
32+
{
33+
parent.Children.RemoveAt(0);
34+
parent.Children.Add(child1);
35+
tx.Commit();
36+
}
37+
}
38+
39+
[Test]
40+
public void VerifyRevisionCount()
41+
{
42+
CollectionAssert.AreEquivalent(new[] { 1 }, AuditReader().GetRevisions(typeof(Parent), parent_id));
43+
CollectionAssert.AreEquivalent(new[] { 1, 2 }, AuditReader().GetRevisions(typeof(Child), child1_id));
44+
CollectionAssert.AreEquivalent(new[] { 1, 2 }, AuditReader().GetRevisions(typeof(Child), child2_id));
45+
}
46+
47+
[Test]
48+
public void VerifyHistoryOfParent1()
49+
{
50+
var child1 = new Child {Id = child1_id};
51+
var child2 = new Child {Id = child2_id};
52+
53+
var ver1 = AuditReader().Find<Parent>(parent_id, 1);
54+
ver1.Children[0].Should().Be.EqualTo(child1);
55+
ver1.Children[1].Should().Be.EqualTo(child2);
56+
}
57+
58+
[Test]
59+
public void VerifyHistoryOfParent2()
60+
{
61+
var child1 = new Child { Id = child1_id };
62+
var child2 = new Child { Id = child2_id };
63+
64+
var ver1 = AuditReader().Find<Parent>(parent_id, 2);
65+
ver1.Children[1].Should().Be.EqualTo(child1);
66+
ver1.Children[0].Should().Be.EqualTo(child2);
67+
}
68+
}
69+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
3+
assembly="NHibernate.Envers.Tests"
4+
namespace="NHibernate.Envers.Tests.NetSpecific.Integration.BidirectionalList.InverseFalse">
5+
<class name="Parent">
6+
<id name="Id">
7+
<generator class="native"/>
8+
</id>
9+
<list name="Children"
10+
cascade="all-delete-orphan"
11+
inverse="false">
12+
<key column ="Parent" not-null="true"/>
13+
<index column ="IndexOrder" />
14+
<one-to-many class="Child"/>
15+
</list>
16+
</class>
17+
18+
<class name="Child">
19+
<id name="Id">
20+
<generator class="native"/>
21+
</id>
22+
<many-to-one name="Parent"
23+
not-null="true"
24+
update="false"
25+
insert="false"/>
26+
</class>
27+
</hibernate-mapping>
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
using System.Collections.Generic;
2+
using NHibernate.Envers.Configuration.Attributes;
3+
4+
namespace NHibernate.Envers.Tests.NetSpecific.Integration.BidirectionalList.InverseFalse
5+
{
6+
[Audited]
7+
public class Parent
8+
{
9+
public Parent()
10+
{
11+
Children = new List<Child>();
12+
}
13+
14+
public virtual int Id { get; set; }
15+
public virtual IList<Child> Children
16+
{
17+
get;
18+
protected set;
19+
}
20+
21+
public override bool Equals(object obj)
22+
{
23+
if (!(obj is Parent casted))
24+
return false;
25+
return (Id == casted.Id);
26+
}
27+
28+
public override int GetHashCode()
29+
{
30+
return Id;
31+
}
32+
}
33+
34+
[Audited]
35+
public class Child
36+
{
37+
public virtual int Id { get; set; }
38+
public virtual Parent Parent { get; set; }
39+
40+
public override bool Equals(object obj)
41+
{
42+
if (!(obj is Child casted))
43+
return false;
44+
return (Id == casted.Id);
45+
}
46+
47+
public override int GetHashCode()
48+
{
49+
return Id;
50+
}
51+
}
52+
}

0 commit comments

Comments
 (0)