Skip to content

Commit bea642d

Browse files
committed
work on adding tests for different scenarios
1 parent 8847403 commit bea642d

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

test/JsonApiDotNetCoreExampleTests/Acceptance/Spec/DeeplyNestedInclusionTests.cs

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Collections.Generic;
12
using System.Net;
23
using System.Net.Http;
34
using System.Threading.Tasks;
@@ -53,5 +54,85 @@ public async Task Can_Include_Nested_Relationships()
5354
Assert.NotNull(responseTodoItem.Collection);
5455
Assert.NotNull(responseTodoItem.Collection.Owner);
5556
}
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+
}
56137
}
57138
}

0 commit comments

Comments
 (0)