Skip to content

Commit 7240908

Browse files
committed
Add test case from NH-1863. Already working since at least 3.3.3.GA.
1 parent 54bbb39 commit 7240908

File tree

4 files changed

+170
-0
lines changed

4 files changed

+170
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using Iesi.Collections.Generic;
2+
3+
namespace NHibernate.Test.NHSpecificTest.NH1863
4+
{
5+
public class Customer
6+
{
7+
private ISet<Category> _categories = new HashedSet<Category>();
8+
9+
public virtual int Id { get; set; }
10+
11+
public virtual string Name { get; set; }
12+
13+
public virtual ISet<Category> Categories
14+
{
15+
get { return _categories; }
16+
set { _categories = value; }
17+
}
18+
}
19+
20+
public class Category
21+
{
22+
public virtual int Id { get; set; }
23+
24+
public virtual bool IsActive { get; set; }
25+
}
26+
27+
}
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
using System.Collections.Generic;
2+
using NHibernate.Criterion;
3+
using NUnit.Framework;
4+
5+
namespace NHibernate.Test.NHSpecificTest.NH1863
6+
{
7+
[TestFixture]
8+
public class Fixture : BugTestCase
9+
{
10+
protected override void OnSetUp()
11+
{
12+
using (ISession s = OpenSession())
13+
{
14+
using (ITransaction tx = s.BeginTransaction())
15+
{
16+
var category = new Category {IsActive = true};
17+
s.Save(category);
18+
19+
var customerWithCategory = new Customer {Name = "HasCategory"};
20+
customerWithCategory.Categories.Add(category);
21+
s.Save(customerWithCategory);
22+
23+
var customerWithNoCategory = new Customer {Name = "HasNoCategory"};
24+
s.Save(customerWithNoCategory);
25+
26+
tx.Commit();
27+
}
28+
}
29+
}
30+
31+
protected override void OnTearDown()
32+
{
33+
using (ISession s = OpenSession())
34+
{
35+
using (ITransaction tx = s.BeginTransaction())
36+
{
37+
s.Delete("from Customer");
38+
s.Delete("from Category");
39+
tx.Commit();
40+
}
41+
}
42+
}
43+
44+
[Test]
45+
public void CanGetCustomerWithCategoryWhenFilterIsEnabled()
46+
{
47+
using (ISession session = OpenSession())
48+
{
49+
IFilter filter = session.EnableFilter("onlyActive");
50+
filter.SetParameter("activeFlag", 1);
51+
52+
ICriteria hasCategoryCriteria = session.CreateCriteria(typeof (Customer));
53+
hasCategoryCriteria.Add(Restrictions.Eq("Name", "HasCategory"));
54+
IList<Customer> hasCategoryResult = hasCategoryCriteria.List<Customer>();
55+
56+
Assert.That(hasCategoryResult.Count, Is.EqualTo(1));
57+
}
58+
59+
}
60+
61+
[Test]
62+
public void CanGetCustomerWithCategoryWhenFilterIsDisabled()
63+
{
64+
using (ISession session = OpenSession())
65+
{
66+
session.DisableFilter("onlyActive");
67+
68+
ICriteria hasCategoryCriteria = session.CreateCriteria(typeof (Customer));
69+
hasCategoryCriteria.Add(Restrictions.Eq("Name", "HasCategory"));
70+
IList<Customer> hasCategoryResult = hasCategoryCriteria.List<Customer>();
71+
72+
Assert.That(hasCategoryResult.Count, Is.EqualTo(1));
73+
}
74+
}
75+
76+
[Test]
77+
public void CanGetCustomerWithNoCategoryWhenFilterIsEnabled()
78+
{
79+
using (ISession session = OpenSession())
80+
{
81+
IFilter filter = session.EnableFilter("onlyActive");
82+
filter.SetParameter("activeFlag", 1);
83+
84+
ICriteria hasNoCategoryCriteria = session.CreateCriteria(typeof (Customer));
85+
hasNoCategoryCriteria.Add(Restrictions.Eq("Name", "HasNoCategory"));
86+
IList<Customer> hasNoCategoryResult = hasNoCategoryCriteria.List<Customer>();
87+
88+
Assert.That(hasNoCategoryResult.Count, Is.EqualTo(1));
89+
}
90+
91+
}
92+
93+
[Test]
94+
public void CanGetCustomerWithNoCategoryWhenFilterIsDisabled()
95+
{
96+
using (ISession session = OpenSession())
97+
{
98+
session.DisableFilter("onlyActive");
99+
100+
ICriteria hasNoCategoryCriteria = session.CreateCriteria(typeof (Customer));
101+
hasNoCategoryCriteria.Add(Restrictions.Eq("Name", "HasNoCategory"));
102+
IList<Customer> hasNoCategoryResult = hasNoCategoryCriteria.List<Customer>();
103+
104+
Assert.That(hasNoCategoryResult.Count, Is.EqualTo(1));
105+
}
106+
107+
}
108+
}
109+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?xml version="1.0"?>
2+
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" namespace="NHibernate.Test.NHSpecificTest.NH1863">
3+
4+
<class name="Customer" table="Customer">
5+
<id name="Id" column="Id">
6+
<generator class="native" />
7+
</id>
8+
<property name="Name" not-null="true" />
9+
10+
<set name='Categories' lazy='false' fetch='join'>
11+
<key column='Category_Id' />
12+
<one-to-many class='Category' />
13+
<filter name='onlyActive' condition=':activeFlag = IsActive' />
14+
</set>
15+
16+
</class>
17+
18+
<class name="Category" table="Category">
19+
<id name="Id" column="Id">
20+
<generator class="native" />
21+
</id>
22+
<property name="IsActive" not-null="true" />
23+
24+
<filter name="onlyActive" condition=":activeFlag = IsActive" />
25+
</class>
26+
27+
<filter-def name="onlyActive">
28+
<filter-param name="activeFlag" type="int"/>
29+
</filter-def>
30+
31+
</hibernate-mapping>

src/NHibernate.Test/NHibernate.Test.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -670,6 +670,8 @@
670670
<Compile Include="NHSpecificTest\BagWithLazyExtraAndFilter\Domain.cs" />
671671
<Compile Include="NHSpecificTest\BagWithLazyExtraAndFilter\Fixture.cs" />
672672
<Compile Include="Component\Basic\ComponentWithUniqueConstraintTests.cs" />
673+
<Compile Include="NHSpecificTest\NH1863\Domain.cs" />
674+
<Compile Include="NHSpecificTest\NH1863\Fixture.cs" />
673675
<Compile Include="MappingByCode\ExpliticMappingTests\ClassWithoutNamespaceTests.cs" />
674676
<Compile Include="NHSpecificTest\NH1882\Author.cs" />
675677
<Compile Include="NHSpecificTest\NH1882\Book.cs" />
@@ -2912,6 +2914,7 @@
29122914
<EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" />
29132915
</ItemGroup>
29142916
<ItemGroup>
2917+
<EmbeddedResource Include="NHSpecificTest\NH1863\Mappings.hbm.xml" />
29152918
<EmbeddedResource Include="NHSpecificTest\NH3614\Mappings.hbm.xml" />
29162919
<EmbeddedResource Include="NHSpecificTest\NH3505\Mappings.hbm.xml" />
29172920
<EmbeddedResource Include="NHSpecificTest\NH3428\Mappings.hbm.xml" />

0 commit comments

Comments
 (0)