@@ -180,6 +180,36 @@ public async Task Can_Filter_TodoItems_Using_IsNotNull_Operator()
180
180
Assert . All ( todoItems , t => Assert . NotNull ( t . UpdatedDate ) ) ;
181
181
}
182
182
183
+ [ Fact ]
184
+ public async Task Can_Filter_TodoItems_ByParent_Using_IsNotNull_Operator ( )
185
+ {
186
+ // Arrange
187
+ var todoItem = _todoItemFaker . Generate ( ) ;
188
+ todoItem . Assignee = new Person ( ) ;
189
+
190
+ var otherTodoItem = _todoItemFaker . Generate ( ) ;
191
+ otherTodoItem . Assignee = null ;
192
+
193
+ _context . TodoItems . AddRange ( new [ ] { todoItem , otherTodoItem } ) ;
194
+ _context . SaveChanges ( ) ;
195
+
196
+ var httpMethod = new HttpMethod ( "GET" ) ;
197
+ var route = $ "/api/v1/todo-items?filter[assignee.id]=isnotnull:";
198
+ var request = new HttpRequestMessage ( httpMethod , route ) ;
199
+
200
+ // Act
201
+ var response = await _fixture . Client . SendAsync ( request ) ;
202
+
203
+ Assert . Equal ( HttpStatusCode . OK , response . StatusCode ) ;
204
+
205
+ var body = await response . Content . ReadAsStringAsync ( ) ;
206
+ var todoItems = _fixture . GetService < IJsonApiDeSerializer > ( ) . DeserializeList < TodoItem > ( body ) ;
207
+
208
+ // Assert
209
+ Assert . NotEmpty ( todoItems ) ;
210
+ Assert . All ( todoItems , t => Assert . NotNull ( t . Assignee ) ) ;
211
+ }
212
+
183
213
[ Fact ]
184
214
public async Task Can_Filter_TodoItems_Using_IsNull_Operator ( )
185
215
{
@@ -210,6 +240,36 @@ public async Task Can_Filter_TodoItems_Using_IsNull_Operator()
210
240
Assert . All ( todoItems , t => Assert . Null ( t . UpdatedDate ) ) ;
211
241
}
212
242
243
+ [ Fact ]
244
+ public async Task Can_Filter_TodoItems_ByParent_Using_IsNull_Operator ( )
245
+ {
246
+ // Arrange
247
+ var todoItem = _todoItemFaker . Generate ( ) ;
248
+ todoItem . Assignee = null ;
249
+
250
+ var otherTodoItem = _todoItemFaker . Generate ( ) ;
251
+ otherTodoItem . Assignee = new Person ( ) ;
252
+
253
+ _context . TodoItems . AddRange ( new [ ] { todoItem , otherTodoItem } ) ;
254
+ _context . SaveChanges ( ) ;
255
+
256
+ var httpMethod = new HttpMethod ( "GET" ) ;
257
+ var route = $ "/api/v1/todo-items?filter[assignee.id]=isnull:";
258
+ var request = new HttpRequestMessage ( httpMethod , route ) ;
259
+
260
+ // Act
261
+ var response = await _fixture . Client . SendAsync ( request ) ;
262
+
263
+ Assert . Equal ( HttpStatusCode . OK , response . StatusCode ) ;
264
+
265
+ var body = await response . Content . ReadAsStringAsync ( ) ;
266
+ var todoItems = _fixture . GetService < IJsonApiDeSerializer > ( ) . DeserializeList < TodoItem > ( body ) ;
267
+
268
+ // Assert
269
+ Assert . NotEmpty ( todoItems ) ;
270
+ Assert . All ( todoItems , t => Assert . Null ( t . Assignee ) ) ;
271
+ }
272
+
213
273
[ Fact ]
214
274
public async Task Can_Filter_TodoItems_Using_Like_Operator ( )
215
275
{
0 commit comments