Skip to content

Commit 7cb5024

Browse files
committed
Add failing test cases for NH-2049.
1 parent 7240908 commit 7cb5024

File tree

4 files changed

+133
-0
lines changed

4 files changed

+133
-0
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
using System.Collections.Generic;
2+
using NUnit.Framework;
3+
4+
namespace NHibernate.Test.NHSpecificTest.NH2049
5+
{
6+
[TestFixture]
7+
public class Fixture2049 : BugTestCase
8+
{
9+
protected override void OnSetUp()
10+
{
11+
base.OnSetUp();
12+
using (ISession session = this.OpenSession())
13+
using (var tx = session.BeginTransaction())
14+
{
15+
var p = new Person {Id = 1, Name = "Name"};
16+
session.Save(p);
17+
var ic = new IndividualCustomer {Deleted = false, Person = p, Id = 1};
18+
session.Save(ic);
19+
20+
var deletedPerson = new Person {Id = 2, Name = "Name Deleted"};
21+
session.Save(deletedPerson);
22+
var deletedCustomer = new IndividualCustomer {Deleted = true, Person = deletedPerson, Id = 2};
23+
session.Save(deletedCustomer);
24+
25+
tx.Commit();
26+
}
27+
}
28+
29+
30+
protected override void OnTearDown()
31+
{
32+
base.OnTearDown();
33+
using (ISession session = this.OpenSession())
34+
{
35+
session.Delete("from System.Object");
36+
session.Flush();
37+
}
38+
}
39+
40+
41+
[Test]
42+
[Ignore("Known bug NH-2049.")]
43+
public void CanCriteriaQueryWithFilterOnJoinClassBaseClassProperty()
44+
{
45+
using (ISession session = OpenSession())
46+
{
47+
session.EnableFilter("DeletedCustomer").SetParameter("deleted", false);
48+
IList<Person> persons = session.CreateCriteria(typeof (Person)).List<Person>();
49+
50+
Assert.That(persons, Has.Count.EqualTo(1));
51+
Assert.That(persons[0].Id, Is.EqualTo(1));
52+
Assert.That(persons[0].IndividualCustomer, Is.Not.Null);
53+
Assert.That(persons[0].IndividualCustomer.Id, Is.EqualTo(1));
54+
Assert.That(persons[0].IndividualCustomer.Deleted, Is.False);
55+
}
56+
}
57+
58+
59+
[Test]
60+
[Ignore("Known bug NH-2049.")]
61+
public void CanHqlQueryWithFilterOnJoinClassBaseClassProperty()
62+
{
63+
using (ISession session = OpenSession())
64+
{
65+
session.EnableFilter("DeletedCustomer").SetParameter("deleted", false);
66+
var persons = session.CreateQuery("from Person as person left join person.IndividualCustomer as indCustomer")
67+
.List<Person>();
68+
69+
Assert.That(persons, Has.Count.EqualTo(1));
70+
Assert.That(persons[0].Id, Is.EqualTo(1));
71+
Assert.That(persons[0].IndividualCustomer, Is.Not.Null);
72+
Assert.That(persons[0].IndividualCustomer.Id, Is.EqualTo(1));
73+
Assert.That(persons[0].IndividualCustomer.Deleted, Is.False);
74+
}
75+
}
76+
}
77+
}
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 xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test"
3+
namespace="NHibernate.Test.NHSpecificTest.NH2049" default-lazy="false">
4+
5+
<class name="Customer" abstract="true">
6+
<id name="Id">
7+
<generator class="assigned" />
8+
</id>
9+
<property name="Deleted" type="Boolean" not-null="true" />
10+
<filter name="DeletedCustomer" condition="Deleted = :deleted" />
11+
</class>
12+
13+
<joined-subclass name="IndividualCustomer" extends="Customer">
14+
<key column="IndividualCustomerID" />
15+
<many-to-one name="Person" class="Person" column="PersonID" not-null="true" unique="true" />
16+
</joined-subclass>
17+
18+
<class name="Person">
19+
<id name="Id">
20+
<generator class="assigned" />
21+
</id>
22+
<property name="Name" />
23+
<one-to-one name="IndividualCustomer" class="IndividualCustomer" property-ref="Person" />
24+
</class>
25+
26+
<filter-def name="DeletedCustomer">
27+
<filter-param name="deleted" type="Boolean"/>
28+
</filter-def>
29+
30+
</hibernate-mapping>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+

2+
3+
namespace NHibernate.Test.NHSpecificTest.NH2049
4+
{
5+
public abstract class Customer
6+
{
7+
public int Id { get; set; }
8+
public bool Deleted { get; set; }
9+
}
10+
11+
public class IndividualCustomer : Customer
12+
{
13+
public Person Person { get; set; }
14+
}
15+
16+
public class Person
17+
{
18+
public int Id { get; set; }
19+
public string Name { get; set; }
20+
21+
public IndividualCustomer IndividualCustomer { get; set; }
22+
}
23+
}

src/NHibernate.Test/NHibernate.Test.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -677,6 +677,8 @@
677677
<Compile Include="NHSpecificTest\NH1882\Book.cs" />
678678
<Compile Include="NHSpecificTest\NH1882\Publisher.cs" />
679679
<Compile Include="NHSpecificTest\NH1882\TestCollectionInitializingDuringFlush.cs" />
680+
<Compile Include="NHSpecificTest\NH2049\Model.cs" />
681+
<Compile Include="NHSpecificTest\NH2049\Fixture2049.cs" />
680682
<Compile Include="NHSpecificTest\NH3614\Entity.cs" />
681683
<Compile Include="NHSpecificTest\NH3614\Fixture.cs" />
682684
<Compile Include="NHSpecificTest\NH3505\Student.cs" />
@@ -2914,6 +2916,7 @@
29142916
<EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" />
29152917
</ItemGroup>
29162918
<ItemGroup>
2919+
<EmbeddedResource Include="NHSpecificTest\NH2049\Mappings.hbm.xml" />
29172920
<EmbeddedResource Include="NHSpecificTest\NH1863\Mappings.hbm.xml" />
29182921
<EmbeddedResource Include="NHSpecificTest\NH3614\Mappings.hbm.xml" />
29192922
<EmbeddedResource Include="NHSpecificTest\NH3505\Mappings.hbm.xml" />

0 commit comments

Comments
 (0)