1
+ using System . Collections . Generic ;
1
2
using System . Net ;
2
3
using System . Net . Http ;
3
4
using System . Threading . Tasks ;
@@ -53,5 +54,85 @@ public async Task Can_Include_Nested_Relationships()
53
54
Assert . NotNull ( responseTodoItem . Collection ) ;
54
55
Assert . NotNull ( responseTodoItem . Collection . Owner ) ;
55
56
}
57
+
58
+ [ Fact ]
59
+ public async Task Can_Include_Nested_HasMany_Relationships ( )
60
+ {
61
+ // arrange
62
+ const string route = "/api/v1/todo-items?include=collection.todo-items" ;
63
+
64
+ var todoItem = new TodoItem {
65
+ Collection = new TodoItemCollection {
66
+ Owner = new Person ( ) ,
67
+ TodoItems = new List < TodoItem > {
68
+ new TodoItem ( ) ,
69
+ new TodoItem ( )
70
+ }
71
+ }
72
+ } ;
73
+
74
+ var context = _fixture . GetService < AppDbContext > ( ) ;
75
+ context . TodoItems . RemoveRange ( context . TodoItems ) ;
76
+ context . TodoItems . Add ( todoItem ) ;
77
+ await context . SaveChangesAsync ( ) ;
78
+
79
+ // act
80
+ var response = await _fixture . Client . GetAsync ( route ) ;
81
+
82
+ // assert
83
+ Assert . Equal ( HttpStatusCode . OK , response . StatusCode ) ;
84
+
85
+ var body = await response . Content . ReadAsStringAsync ( ) ;
86
+ var todoItems = _fixture . DeSerializer . DeserializeList < TodoItem > ( body ) ;
87
+
88
+ var responseTodoItem = todoItems [ 0 ] ;
89
+ Assert . NotNull ( responseTodoItem ) ;
90
+ Assert . NotNull ( responseTodoItem . Collection ) ;
91
+ Assert . NotNull ( responseTodoItem . Collection . TodoItems ) ;
92
+ Assert . Equal ( 2 , responseTodoItem . Collection . TodoItems . Count ) ;
93
+
94
+ // TODO: assert number of things in included
95
+ }
96
+
97
+ [ Fact ]
98
+ public async Task Can_Include_Nested_HasMany_Relationships_BelongsTo ( )
99
+ {
100
+ // arrange
101
+ const string route = "/api/v1/todo-items?include=collection.todo-items.owner" ;
102
+
103
+ var todoItem = new TodoItem {
104
+ Collection = new TodoItemCollection {
105
+ Owner = new Person ( ) ,
106
+ TodoItems = new List < TodoItem > {
107
+ new TodoItem {
108
+ Owner = new Person ( )
109
+ } ,
110
+ new TodoItem ( )
111
+ }
112
+ }
113
+ } ;
114
+
115
+ var context = _fixture . GetService < AppDbContext > ( ) ;
116
+ context . TodoItems . RemoveRange ( context . TodoItems ) ;
117
+ context . TodoItems . Add ( todoItem ) ;
118
+ await context . SaveChangesAsync ( ) ;
119
+
120
+ // act
121
+ var response = await _fixture . Client . GetAsync ( route ) ;
122
+
123
+ // assert
124
+ Assert . Equal ( HttpStatusCode . OK , response . StatusCode ) ;
125
+
126
+ var body = await response . Content . ReadAsStringAsync ( ) ;
127
+ var todoItems = _fixture . DeSerializer . DeserializeList < TodoItem > ( body ) ;
128
+
129
+ var responseTodoItem = todoItems [ 0 ] ;
130
+ Assert . NotNull ( responseTodoItem ) ;
131
+ Assert . NotNull ( responseTodoItem . Collection ) ;
132
+ Assert . NotNull ( responseTodoItem . Collection . TodoItems ) ;
133
+ Assert . Equal ( 2 , responseTodoItem . Collection . TodoItems . Count ) ;
134
+
135
+ // TODO: assert number of things in included
136
+ }
56
137
}
57
138
}
0 commit comments