Skip to content

Commit d8850c7

Browse files
committed
Add contributed test with modifications for NH-2852 (Thanks to Daniel Guenter)
1 parent 6195424 commit d8850c7

File tree

4 files changed

+140
-0
lines changed

4 files changed

+140
-0
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
using System.Linq;
2+
using NHibernate.Linq;
3+
using NUnit.Framework;
4+
5+
namespace NHibernate.Test.NHSpecificTest.NH2852
6+
{
7+
[TestFixture]
8+
public class Fixture : BugTestCase
9+
{
10+
protected override void OnSetUp()
11+
{
12+
using (var session = OpenSession())
13+
using (var transction = session.BeginTransaction())
14+
{
15+
var city = new City { Name = "London" };
16+
session.Save(city);
17+
var address = new Address {City = city, Name = "Tower"};
18+
session.Save(address);
19+
var person = new Person {Address = address, Name = "Bill"};
20+
session.Save(person);
21+
var child = new Person {Parent = person};
22+
session.Save(child);
23+
var grandChild = new Person {Parent = child};
24+
session.Save(grandChild);
25+
26+
transction.Commit();
27+
}
28+
}
29+
30+
protected override void OnTearDown()
31+
{
32+
using (var session = OpenSession())
33+
using (var transction = session.BeginTransaction())
34+
{
35+
session.Delete("from System.Object");
36+
transction.Commit();
37+
}
38+
}
39+
40+
[Test]
41+
public void ThenFetchCanExecute()
42+
{
43+
using (var session = OpenSession())
44+
{
45+
var query = session.Query<Person>()
46+
.Where(p => p.Address.City.Name == "London")
47+
.Fetch(r => r.Address)
48+
.ThenFetch(a => a.City);
49+
50+
var results = query.ToList();
51+
52+
session.Close();
53+
54+
Assert.True(NHibernateUtil.IsInitialized(results[0].Address));
55+
Assert.True(NHibernateUtil.IsInitialized(results[0].Address.City));
56+
}
57+
}
58+
59+
[Test]
60+
public void AlsoFails()
61+
{
62+
using (var session = OpenSession())
63+
{
64+
var query = session.Query<Person>()
65+
.Where(p => p.Parent.Parent.Name == "Bill")
66+
.Fetch(p => p.Parent)
67+
.ThenFetch(p => p.Parent);
68+
69+
var results = query.ToList();
70+
71+
session.Close();
72+
73+
Assert.True(NHibernateUtil.IsInitialized(results[0].Parent));
74+
Assert.True(NHibernateUtil.IsInitialized(results[0].Parent.Parent));
75+
}
76+
}
77+
}
78+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<hibernate-mapping
3+
xmlns="urn:nhibernate-mapping-2.2"
4+
namespace="NHibernate.Test.NHSpecificTest.NH2852"
5+
assembly="NHibernate.Test">
6+
7+
<class name="Person" table="People">
8+
<id name="Id">
9+
<generator class="identity"/>
10+
</id>
11+
<property name="Name"/>
12+
<many-to-one name="Address" column="AddressId" class="Address"/>
13+
<many-to-one name="Parent" column="ParentId" class="Person"/>
14+
</class>
15+
16+
<class name="Address" table="Addresses">
17+
<id name="Id">
18+
<generator class="identity"/>
19+
</id>
20+
<property name="Name"/>
21+
<many-to-one name="City" column="CityId" class="City"/>
22+
</class>
23+
24+
<class name="City" table="Cities">
25+
<id name="Id">
26+
<generator class="identity"/>
27+
</id>
28+
<property name="Name"/>
29+
</class>
30+
</hibernate-mapping>
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
namespace NHibernate.Test.NHSpecificTest.NH2852
2+
{
3+
public class Person
4+
{
5+
public virtual int Id { get; set; }
6+
7+
public virtual string Name { get; set; }
8+
9+
public virtual Person Parent { get; set; }
10+
11+
public virtual Address Address { get; set; }
12+
}
13+
14+
public class Address
15+
{
16+
public virtual int Id { get; set; }
17+
18+
public virtual string Name { get; set; }
19+
20+
public virtual City City { get; set; }
21+
}
22+
23+
public class City
24+
{
25+
public virtual int Id { get; set; }
26+
27+
public virtual string Name { get; set; }
28+
}
29+
}

src/NHibernate.Test/NHibernate.Test.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,6 +1001,8 @@
10011001
<Compile Include="NHSpecificTest\NH3132\Product.cs" />
10021002
<Compile Include="NHSpecificTest\NH3139\Fixture.cs" />
10031003
<Compile Include="NHSpecificTest\NH3139\Product.cs" />
1004+
<Compile Include="NHSpecificTest\NH2852\Fixture.cs" />
1005+
<Compile Include="NHSpecificTest\NH2852\Person.cs" />
10041006
<Compile Include="NHSpecificTest\Properties\CompositePropertyRefTest.cs" />
10051007
<Compile Include="NHSpecificTest\Properties\DynamicEntityTest.cs" />
10061008
<Compile Include="NHSpecificTest\Properties\Model.cs" />
@@ -2851,6 +2853,7 @@
28512853
<EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" />
28522854
</ItemGroup>
28532855
<ItemGroup>
2856+
<EmbeddedResource Include="NHSpecificTest\NH2852\Mappings.hbm.xml" />
28542857
<EmbeddedResource Include="NHSpecificTest\NH2898\Mappings.hbm.xml" />
28552858
<EmbeddedResource Include="NHSpecificTest\NH2808\Mappings.hbm.xml" />
28562859
<EmbeddedResource Include="NHSpecificTest\NH3121\Mappings.hbm.xml" />

0 commit comments

Comments
 (0)