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