@@ -7,215 +7,240 @@ namespace NHibernate.Test.NHSpecificTest.ManyToOneFilters20Behaviour
7
7
[ TestFixture ]
8
8
public class Fixture : BugTestCase
9
9
{
10
- private static IList < Parent > joinGraphUsingHql ( ISession s )
10
+ private static IList < Parent > JoinGraphUsingHql ( ISession s )
11
11
{
12
12
const string hql = @"select p from Parent p
13
- join p.Child c";
13
+ join p.Child c";
14
14
return s . CreateQuery ( hql ) . List < Parent > ( ) ;
15
15
}
16
16
17
- private static IList < Parent > joinGraphUsingCriteria ( ISession s )
17
+ private static IList < Parent > JoinGraphUsingCriteria ( ISession s )
18
18
{
19
19
return s . CreateCriteria ( typeof ( Parent ) ) . SetFetchMode ( "Child" , FetchMode . Join ) . List < Parent > ( ) ;
20
20
}
21
21
22
- private static Parent createParent ( )
22
+ private static Parent CreateParent ( )
23
23
{
24
24
var ret = new Parent { Child = new Child ( ) } ;
25
25
ret . Address = new Address { Parent = ret } ;
26
26
return ret ;
27
27
}
28
28
29
- private static void enableFilters ( ISession s )
29
+ private static void EnableFilters ( ISession s )
30
30
{
31
- IFilter f = s . EnableFilter ( "activeChild" ) ;
31
+ var f = s . EnableFilter ( "activeChild" ) ;
32
32
f . SetParameter ( "active" , true ) ;
33
- IFilter f2 = s . EnableFilter ( "alwaysValid" ) ;
33
+ var f2 = s . EnableFilter ( "alwaysValid" ) ;
34
34
f2 . SetParameter ( "always" , true ) ;
35
35
}
36
36
37
37
protected override void OnTearDown ( )
38
38
{
39
- using ( ISession s = OpenSession ( ) )
39
+ using ( var s = OpenSession ( ) )
40
+ using ( var tx = s . BeginTransaction ( ) )
40
41
{
41
- using ( ITransaction tx = s . BeginTransaction ( ) )
42
- {
43
- s . Delete ( "from Parent" ) ;
44
- tx . Commit ( ) ;
45
- }
42
+ s . Delete ( "from Parent" ) ;
43
+ tx . Commit ( ) ;
46
44
}
47
45
}
48
46
49
47
[ Test ]
50
48
public void VerifyAlwaysFilter ( )
51
49
{
52
- using ( ISession s = OpenSession ( ) )
50
+ using ( var s = OpenSession ( ) )
51
+ using ( var tx = s . BeginTransaction ( ) )
53
52
{
54
- using ( ITransaction tx = s . BeginTransaction ( ) )
55
- {
56
- Parent p = createParent ( ) ;
57
- p . Child . Always = false ;
58
- s . Save ( p ) ;
59
- tx . Commit ( ) ;
60
- }
53
+ var p = CreateParent ( ) ;
54
+ p . Child . Always = false ;
55
+ s . Save ( p ) ;
56
+ tx . Commit ( ) ;
61
57
}
62
58
63
- using ( ISession s = OpenSession ( ) )
59
+ using ( var s = OpenSession ( ) )
64
60
{
65
- enableFilters ( s ) ;
66
- IList < Parent > resCriteria = joinGraphUsingCriteria ( s ) ;
67
- IList < Parent > resHql = joinGraphUsingHql ( s ) ;
61
+ EnableFilters ( s ) ;
62
+ var resCriteria = JoinGraphUsingCriteria ( s ) ;
63
+ var resHql = JoinGraphUsingHql ( s ) ;
68
64
69
- Assert . AreEqual ( 0 , resCriteria . Count ) ;
70
- Assert . AreEqual ( 0 , resHql . Count ) ;
65
+ Assert . That ( resCriteria . Count , Is . EqualTo ( 0 ) ) ;
66
+ Assert . That ( resHql . Count , Is . EqualTo ( 0 ) ) ;
71
67
}
72
68
}
73
69
74
70
[ Test ]
75
71
public void VerifyFilterActiveButNotUsedInManyToOne ( )
76
72
{
77
- using ( ISession s = OpenSession ( ) )
73
+ using ( var s = OpenSession ( ) )
74
+ using ( var tx = s . BeginTransaction ( ) )
78
75
{
79
- using ( ITransaction tx = s . BeginTransaction ( ) )
80
- {
81
- s . Save ( createParent ( ) ) ;
82
- tx . Commit ( ) ;
83
- }
76
+ s . Save ( CreateParent ( ) ) ;
77
+ tx . Commit ( ) ;
84
78
}
85
79
86
- using ( ISession s = OpenSession ( ) )
80
+ using ( var s = OpenSession ( ) )
87
81
{
88
- enableFilters ( s ) ;
89
- IList < Parent > resCriteria = joinGraphUsingCriteria ( s ) ;
90
- IList < Parent > resHql = joinGraphUsingHql ( s ) ;
82
+ EnableFilters ( s ) ;
83
+ var resCriteria = JoinGraphUsingCriteria ( s ) ;
84
+ var resHql = JoinGraphUsingHql ( s ) ;
91
85
92
- Assert . AreEqual ( 1 , resCriteria . Count ) ;
93
- Assert . IsNotNull ( resCriteria [ 0 ] . Child ) ;
86
+ Assert . That ( resCriteria . Count , Is . EqualTo ( 1 ) ) ;
87
+ Assert . That ( resCriteria [ 0 ] . Child , Is . Not . Null ) ;
94
88
95
- Assert . AreEqual ( 1 , resHql . Count ) ;
96
- Assert . IsNotNull ( resHql [ 0 ] . Child ) ;
89
+ Assert . That ( resHql . Count , Is . EqualTo ( 1 ) ) ;
90
+ Assert . That ( resHql [ 0 ] . Child , Is . Not . Null ) ;
97
91
}
98
92
}
99
93
100
94
[ Test ]
101
95
public void VerifyQueryWithWhereClause ( )
102
96
{
103
- using ( ISession s = OpenSession ( ) )
97
+ using ( var s = OpenSession ( ) )
98
+ using ( var tx = s . BeginTransaction ( ) )
104
99
{
105
- using ( ITransaction tx = s . BeginTransaction ( ) )
106
- {
107
- var p = createParent ( ) ;
108
- p . ParentString = "a" ;
109
- p . Child . ChildString = "b" ;
110
- s . Save ( p ) ;
111
- tx . Commit ( ) ;
112
- }
100
+ var p = CreateParent ( ) ;
101
+ p . ParentString = "a" ;
102
+ p . Child . ChildString = "b" ;
103
+ s . Save ( p ) ;
104
+ tx . Commit ( ) ;
113
105
}
114
106
IList < Parent > resCriteria ;
115
107
IList < Parent > resHql ;
116
- using ( ISession s = OpenSession ( ) )
108
+ using ( var s = OpenSession ( ) )
117
109
{
118
- enableFilters ( s ) ;
110
+ EnableFilters ( s ) ;
119
111
resCriteria = s . CreateCriteria ( typeof ( Parent ) , "p" )
120
- . CreateCriteria ( "Child" , "c" )
121
- . SetFetchMode ( "Child" , FetchMode . Join )
122
- . Add ( Restrictions . Eq ( "p.ParentString" , "a" ) )
123
- . Add ( Restrictions . Eq ( "c.ChildString" , "b" ) )
124
- . List < Parent > ( ) ;
125
- resHql = s . CreateQuery ( @"select p from Parent p
126
- join fetch p.Child c
127
- where p.ParentString='a' and c.ChildString='b'" ) . List < Parent > ( ) ;
112
+ . CreateCriteria ( "Child" , "c" )
113
+ . SetFetchMode ( "Child" , FetchMode . Join )
114
+ . Add ( Restrictions . Eq ( "p.ParentString" , "a" ) )
115
+ . Add ( Restrictions . Eq ( "c.ChildString" , "b" ) )
116
+ . List < Parent > ( ) ;
117
+
118
+ resHql = s . CreateQuery (
119
+ @"select p from Parent p
120
+ join fetch p.Child c
121
+ where p.ParentString='a' and c.ChildString='b'" )
122
+ . List < Parent > ( ) ;
128
123
}
129
- Assert . AreEqual ( 1 , resCriteria . Count ) ;
130
- Assert . IsNotNull ( resCriteria [ 0 ] . Child ) ;
131
- Assert . AreEqual ( 1 , resHql . Count ) ;
132
- Assert . IsNotNull ( resHql [ 0 ] . Child ) ;
124
+ Assert . That ( resCriteria . Count , Is . EqualTo ( 1 ) ) ;
125
+ Assert . That ( resCriteria [ 0 ] . Child , Is . Not . Null ) ;
126
+
127
+ Assert . That ( resHql . Count , Is . EqualTo ( 1 ) ) ;
128
+ Assert . That ( resHql [ 0 ] . Child , Is . Not . Null ) ;
133
129
}
134
130
135
131
[ Test ]
136
132
public void VerifyAlwaysFiltersOnPropertyRef ( )
137
133
{
138
- using ( ISession s = OpenSession ( ) )
134
+ using ( var s = OpenSession ( ) )
135
+ using ( var tx = s . BeginTransaction ( ) )
139
136
{
140
- using ( ITransaction tx = s . BeginTransaction ( ) )
141
- {
142
- Parent p = createParent ( ) ;
143
- s . Save ( p ) ;
144
- tx . Commit ( ) ;
145
- }
137
+ var p = CreateParent ( ) ;
138
+ s . Save ( p ) ;
139
+ tx . Commit ( ) ;
146
140
}
147
141
148
- using ( ISession s = OpenSession ( ) )
142
+ using ( var s = OpenSession ( ) )
149
143
{
150
- enableFilters ( s ) ;
151
- IList < Parent > resCriteria = joinGraphUsingCriteria ( s ) ;
152
- IList < Parent > resHql = joinGraphUsingHql ( s ) ;
153
-
154
- Assert . IsNotNull ( resCriteria [ 0 ] . Address ) ;
155
- Assert . IsNotNull ( resHql [ 0 ] . Address ) ;
144
+ EnableFilters ( s ) ;
145
+ var resCriteria = JoinGraphUsingCriteria ( s ) ;
146
+ var resHql = JoinGraphUsingHql ( s ) ;
147
+
148
+ Assert . That ( resCriteria . Count , Is . EqualTo ( 1 ) ) ;
149
+ Assert . That ( resCriteria [ 0 ] . Address , Is . Not . Null ) ;
150
+ Assert . That ( resHql . Count , Is . EqualTo ( 1 ) ) ;
151
+ Assert . That ( resHql [ 0 ] . Address , Is . Not . Null ) ;
156
152
}
157
153
}
158
154
159
155
[ Test ]
160
156
public void ExplicitFiltersOnCollectionsShouldBeActive ( )
161
157
{
162
- using ( ISession s = OpenSession ( ) )
158
+ using ( var s = OpenSession ( ) )
159
+ using ( var tx = s . BeginTransaction ( ) )
163
160
{
164
- using ( ITransaction tx = s . BeginTransaction ( ) )
161
+ var p = CreateParent ( ) ;
162
+ p . Children = new List < Child >
165
163
{
166
- Parent p = createParent ( ) ;
167
- p . Children = new List < Child >
168
- {
169
- new Child { IsActive = true } ,
170
- new Child { IsActive = false } ,
171
- new Child { IsActive = true }
172
- } ;
173
- s . Save ( p ) ;
174
- tx . Commit ( ) ;
175
- }
164
+ new Child { IsActive = true } ,
165
+ new Child { IsActive = false } ,
166
+ new Child { IsActive = true }
167
+ } ;
168
+ s . Save ( p ) ;
169
+ tx . Commit ( ) ;
176
170
}
177
171
178
- using ( ISession s = OpenSession ( ) )
172
+ using ( var s = OpenSession ( ) )
179
173
{
180
- IFilter f = s . EnableFilter ( "active" ) ;
174
+ var f = s . EnableFilter ( "active" ) ;
181
175
f . SetParameter ( "active" , true ) ;
182
- IList < Parent > resCriteria = joinGraphUsingCriteria ( s ) ;
183
- IList < Parent > resHql = joinGraphUsingHql ( s ) ;
176
+ var resCriteria = JoinGraphUsingCriteria ( s ) ;
177
+ var resHql = JoinGraphUsingHql ( s ) ;
184
178
185
- Assert . AreEqual ( 2 , resCriteria [ 0 ] . Children . Count ) ;
186
- Assert . AreEqual ( 2 , resHql [ 0 ] . Children . Count ) ;
179
+ Assert . That ( resCriteria . Count , Is . EqualTo ( 1 ) ) ;
180
+ Assert . That ( resCriteria [ 0 ] . Children . Count , Is . EqualTo ( 2 ) ) ;
181
+ Assert . That ( resHql . Count , Is . EqualTo ( 1 ) ) ;
182
+ Assert . That ( resHql [ 0 ] . Children . Count , Is . EqualTo ( 2 ) ) ;
187
183
}
188
184
}
189
185
190
186
[ Test ]
191
187
public void ExplicitFiltersOnCollectionsShouldBeActiveWithEagerLoad ( )
192
188
{
193
- using ( ISession s = OpenSession ( ) )
189
+ using ( var s = OpenSession ( ) )
190
+ using ( var tx = s . BeginTransaction ( ) )
194
191
{
195
- using ( ITransaction tx = s . BeginTransaction ( ) )
192
+ var p = CreateParent ( ) ;
193
+ p . Children = new List < Child >
196
194
{
197
- Parent p = createParent ( ) ;
198
- p . Children = new List < Child >
199
- {
200
- new Child { IsActive = true } ,
201
- new Child { IsActive = false } ,
202
- new Child { IsActive = true }
203
- } ;
204
- s . Save ( p ) ;
205
- tx . Commit ( ) ;
206
- }
195
+ new Child { IsActive = true } ,
196
+ new Child { IsActive = false } ,
197
+ new Child { IsActive = true }
198
+ } ;
199
+ s . Save ( p ) ;
200
+ tx . Commit ( ) ;
207
201
}
208
202
209
- using ( ISession s = OpenSession ( ) )
203
+ using ( var s = OpenSession ( ) )
210
204
{
211
- IFilter f = s . EnableFilter ( "active" ) ;
205
+ var f = s . EnableFilter ( "active" ) ;
212
206
f . SetParameter ( "active" , true ) ;
213
- IList < Parent > resCriteria = s . CreateCriteria ( typeof ( Parent ) ) . SetFetchMode ( "Children" , FetchMode . Join ) . List < Parent > ( ) ;
214
- IList < Parent > resHql = s . CreateQuery ( "select p from Parent p join fetch p.Children" ) . List < Parent > ( ) ;
207
+ var resCriteria = s . CreateCriteria ( typeof ( Parent ) ) . SetFetchMode ( "Children" , FetchMode . Join ) . List < Parent > ( ) ;
208
+ var resHql = s . CreateQuery ( "select p from Parent p join fetch p.Children" ) . List < Parent > ( ) ;
209
+
210
+ Assert . That ( resCriteria [ 0 ] . Children . Count , Is . EqualTo ( 2 ) ) ;
211
+ Assert . That ( resHql [ 0 ] . Children . Count , Is . EqualTo ( 2 ) ) ;
212
+ }
213
+ }
215
214
216
- Assert . AreEqual ( 2 , resCriteria [ 0 ] . Children . Count ) ;
217
- Assert . AreEqual ( 2 , resHql [ 0 ] . Children . Count ) ;
215
+ [ Test ]
216
+ public void Verify20BehaviourForPropertyRefAndFilter ( )
217
+ {
218
+ using ( var s = OpenSession ( ) )
219
+ using ( var tx = s . BeginTransaction ( ) )
220
+ {
221
+ s . Save ( CreateParent ( ) ) ;
222
+ tx . Commit ( ) ;
223
+ }
224
+ using ( var s = OpenSession ( ) )
225
+ using ( s . BeginTransaction ( ) )
226
+ {
227
+ s . EnableFilter ( "active" )
228
+ . SetParameter ( "active" , true ) ;
229
+
230
+ var resCriteria = s . CreateCriteria ( typeof ( Parent ) )
231
+ . SetFetchMode ( "Address" , FetchMode . Join )
232
+ . List < Parent > ( ) ;
233
+
234
+ var resHql = s . CreateQuery ( "select p from Parent p join p.Address" )
235
+ . List < Parent > ( ) ;
236
+
237
+ Assert . That ( resCriteria . Count , Is . EqualTo ( 1 ) ) ;
238
+ Assert . That ( resCriteria [ 0 ] . Address , Is . Not . Null ) ;
239
+
240
+ Assert . That ( resHql . Count , Is . EqualTo ( 1 ) ) ;
241
+ Assert . That ( resHql [ 0 ] . Address , Is . Not . Null ) ;
218
242
}
219
243
}
244
+
220
245
}
221
246
}
0 commit comments