Skip to content

Commit 85d3a04

Browse files
author
Chris Santero
committed
refactor acceptance tests
This simplifies the boilerplate for acceptance tests by requiring a single statement to assert both the expected response content and the status code.
1 parent 20cbcb4 commit 85d3a04

4 files changed

Lines changed: 29 additions & 51 deletions

File tree

JSONAPI.EntityFramework.Tests/Acceptance/AcceptanceTestsBase.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Data.Common;
33
using System.Linq;
4+
using System.Net;
45
using System.Net.Http;
56
using System.Text;
67
using System.Text.RegularExpressions;
@@ -27,7 +28,7 @@ protected static DbConnection GetEffortConnection()
2728
return TestHelpers.GetEffortConnection(@"Acceptance\Data");
2829
}
2930

30-
protected static async Task AssertResponseContent(HttpResponseMessage response, string expectedResponseTextResourcePath)
31+
protected static async Task AssertResponseContent(HttpResponseMessage response, string expectedResponseTextResourcePath, HttpStatusCode expectedStatusCode)
3132
{
3233
var responseContent = await response.Content.ReadAsStringAsync();
3334

@@ -39,6 +40,8 @@ protected static async Task AssertResponseContent(HttpResponseMessage response,
3940
redactedResponse.Should().Be(expectedResponse);
4041
response.Content.Headers.ContentType.MediaType.Should().Be("application/vnd.api+json");
4142
response.Content.Headers.ContentType.CharSet.Should().Be("utf-8");
43+
44+
response.StatusCode.Should().Be(expectedStatusCode);
4245
}
4346

4447
#region GET

JSONAPI.EntityFramework.Tests/Acceptance/PostsTests.cs

Lines changed: 16 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ public async Task GetAll()
2424
{
2525
var response = await SubmitGet(effortConnection, "posts");
2626

27-
response.StatusCode.Should().Be(HttpStatusCode.OK);
28-
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\GetAllResponse.json");
27+
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\GetAllResponse.json", HttpStatusCode.OK);
2928
}
3029
}
3130

@@ -41,8 +40,7 @@ public async Task GetWithFilter()
4140
{
4241
var response = await SubmitGet(effortConnection, "posts?title=Post 4");
4342

44-
response.StatusCode.Should().Be(HttpStatusCode.OK);
45-
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\GetWithFilterResponse.json");
43+
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\GetWithFilterResponse.json", HttpStatusCode.OK);
4644
}
4745
}
4846

@@ -58,8 +56,7 @@ public async Task GetById()
5856
{
5957
var response = await SubmitGet(effortConnection, "posts/202");
6058

61-
response.StatusCode.Should().Be(HttpStatusCode.OK);
62-
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\GetByIdResponse.json");
59+
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\GetByIdResponse.json", HttpStatusCode.OK);
6360
}
6461
}
6562

@@ -75,8 +72,7 @@ public async Task Post()
7572
{
7673
var response = await SubmitPost(effortConnection, "posts", @"Acceptance\Fixtures\Posts\Requests\PostRequest.json");
7774

78-
response.StatusCode.Should().Be(HttpStatusCode.OK);
79-
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PostResponse.json");
75+
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PostResponse.json", HttpStatusCode.OK);
8076

8177
using (var dbContext = new TestDbContext(effortConnection, false))
8278
{
@@ -104,8 +100,7 @@ public async Task PutWithAttributeUpdate()
104100
{
105101
var response = await SubmitPut(effortConnection, "posts/202", @"Acceptance\Fixtures\Posts\Requests\PutWithAttributeUpdateRequest.json");
106102

107-
response.StatusCode.Should().Be(HttpStatusCode.OK);
108-
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithAttributeUpdateResponse.json");
103+
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithAttributeUpdateResponse.json", HttpStatusCode.OK);
109104

110105
using (var dbContext = new TestDbContext(effortConnection, false))
111106
{
@@ -134,8 +129,7 @@ public async Task PutWithToManyUpdate()
134129
{
135130
var response = await SubmitPut(effortConnection, "posts/202", @"Acceptance\Fixtures\Posts\Requests\PutWithToManyUpdateRequest.json");
136131

137-
response.StatusCode.Should().Be(HttpStatusCode.OK);
138-
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithToManyUpdateResponse.json");
132+
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithToManyUpdateResponse.json", HttpStatusCode.OK);
139133

140134
using (var dbContext = new TestDbContext(effortConnection, false))
141135
{
@@ -164,8 +158,7 @@ public async Task PutWithToManyHomogeneousDataUpdate()
164158
{
165159
var response = await SubmitPut(effortConnection, "posts/202", @"Acceptance\Fixtures\Posts\Requests\PutWithToManyHomogeneousDataUpdateRequest.json");
166160

167-
response.StatusCode.Should().Be(HttpStatusCode.OK);
168-
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithToManyHomogeneousDataUpdateResponse.json");
161+
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithToManyHomogeneousDataUpdateResponse.json", HttpStatusCode.OK);
169162

170163
using (var dbContext = new TestDbContext(effortConnection, false))
171164
{
@@ -194,8 +187,7 @@ public async Task PutWithToManyEmptyDataUpdate()
194187
{
195188
var response = await SubmitPut(effortConnection, "posts/202", @"Acceptance\Fixtures\Posts\Requests\PutWithToManyEmptyDataUpdateRequest.json");
196189

197-
response.StatusCode.Should().Be(HttpStatusCode.OK);
198-
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithToManyEmptyDataUpdateResponse.json");
190+
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithToManyEmptyDataUpdateResponse.json", HttpStatusCode.OK);
199191

200192
using (var dbContext = new TestDbContext(effortConnection, false))
201193
{
@@ -224,8 +216,7 @@ public async Task PutWithToOneUpdate()
224216
{
225217
var response = await SubmitPut(effortConnection, "posts/202", @"Acceptance\Fixtures\Posts\Requests\PutWithToOneUpdateRequest.json");
226218

227-
response.StatusCode.Should().Be(HttpStatusCode.OK);
228-
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithToOneUpdateResponse.json");
219+
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithToOneUpdateResponse.json", HttpStatusCode.OK);
229220

230221
using (var dbContext = new TestDbContext(effortConnection, false))
231222
{
@@ -254,8 +245,7 @@ public async Task PutWithNullToOneUpdate()
254245
{
255246
var response = await SubmitPut(effortConnection, "posts/202", @"Acceptance\Fixtures\Posts\Requests\PutWithNullToOneUpdateRequest.json");
256247

257-
response.StatusCode.Should().Be(HttpStatusCode.OK);
258-
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithNullToOneUpdateResponse.json");
248+
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithNullToOneUpdateResponse.json", HttpStatusCode.OK);
259249

260250
using (var dbContext = new TestDbContext(effortConnection, false))
261251
{
@@ -284,8 +274,7 @@ public async Task PutWithMissingToOneId()
284274
{
285275
var response = await SubmitPut(effortConnection, "posts/202", @"Acceptance\Fixtures\Posts\Requests\PutWithMissingToOneIdRequest.json");
286276

287-
response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
288-
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithMissingToOneIdResponse.json");
277+
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithMissingToOneIdResponse.json", HttpStatusCode.BadRequest);
289278

290279
using (var dbContext = new TestDbContext(effortConnection, false))
291280
{
@@ -314,8 +303,7 @@ public async Task PutWithMissingToOneType()
314303
{
315304
var response = await SubmitPut(effortConnection, "posts/202", @"Acceptance\Fixtures\Posts\Requests\PutWithMissingToOneTypeRequest.json");
316305

317-
response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
318-
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithMissingToOneTypeResponse.json");
306+
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithMissingToOneTypeResponse.json", HttpStatusCode.BadRequest);
319307

320308
using (var dbContext = new TestDbContext(effortConnection, false))
321309
{
@@ -344,8 +332,7 @@ public async Task PutWithMissingToManyIds()
344332
{
345333
var response = await SubmitPut(effortConnection, "posts/202", @"Acceptance\Fixtures\Posts\Requests\PutWithMissingToManyIdsRequest.json");
346334

347-
response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
348-
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithMissingToManyIdsResponse.json");
335+
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithMissingToManyIdsResponse.json", HttpStatusCode.BadRequest);
349336

350337
using (var dbContext = new TestDbContext(effortConnection, false))
351338
{
@@ -374,8 +361,7 @@ public async Task PutWithMissingToManyType()
374361
{
375362
var response = await SubmitPut(effortConnection, "posts/202", @"Acceptance\Fixtures\Posts\Requests\PutWithMissingToManyTypeRequest.json");
376363

377-
response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
378-
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithMissingToManyTypeResponse.json");
364+
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithMissingToManyTypeResponse.json", HttpStatusCode.BadRequest);
379365

380366
using (var dbContext = new TestDbContext(effortConnection, false))
381367
{
@@ -404,8 +390,7 @@ public async Task PutWithArrayRelationshipValue()
404390
{
405391
var response = await SubmitPut(effortConnection, "posts/202", @"Acceptance\Fixtures\Posts\Requests\PutWithArrayRelationshipValueRequest.json");
406392

407-
response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
408-
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithArrayRelationshipValueResponse.json");
393+
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithArrayRelationshipValueResponse.json", HttpStatusCode.BadRequest);
409394

410395
using (var dbContext = new TestDbContext(effortConnection, false))
411396
{
@@ -434,8 +419,7 @@ public async Task PutWithStringRelationshipValue()
434419
{
435420
var response = await SubmitPut(effortConnection, "posts/202", @"Acceptance\Fixtures\Posts\Requests\PutWithStringRelationshipValueRequest.json");
436421

437-
response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
438-
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithStringRelationshipValueResponse.json");
422+
await AssertResponseContent(response, @"Acceptance\Fixtures\Posts\Responses\PutWithStringRelationshipValueResponse.json", HttpStatusCode.BadRequest);
439423

440424
using (var dbContext = new TestDbContext(effortConnection, false))
441425
{

JSONAPI.EntityFramework.Tests/Acceptance/SortingTests.cs

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ public async Task GetSortedAscending()
2020
{
2121
var response = await SubmitGet(effortConnection, "users?sort=%2BfirstName");
2222

23-
response.StatusCode.Should().Be(HttpStatusCode.OK);
24-
await AssertResponseContent(response, @"Acceptance\Fixtures\Sorting\Responses\GetSortedAscendingResponse.json");
23+
await AssertResponseContent(response, @"Acceptance\Fixtures\Sorting\Responses\GetSortedAscendingResponse.json", HttpStatusCode.OK);
2524
}
2625
}
2726

@@ -37,8 +36,7 @@ public async Task GetSortedDesending()
3736
{
3837
var response = await SubmitGet(effortConnection, "users?sort=-firstName");
3938

40-
response.StatusCode.Should().Be(HttpStatusCode.OK);
41-
await AssertResponseContent(response, @"Acceptance\Fixtures\Sorting\Responses\GetSortedDescendingResponse.json");
39+
await AssertResponseContent(response, @"Acceptance\Fixtures\Sorting\Responses\GetSortedDescendingResponse.json", HttpStatusCode.OK);
4240
}
4341
}
4442

@@ -54,8 +52,7 @@ public async Task GetSortedByMultipleAscending()
5452
{
5553
var response = await SubmitGet(effortConnection, "users?sort=%2BlastName,%2BfirstName");
5654

57-
response.StatusCode.Should().Be(HttpStatusCode.OK);
58-
await AssertResponseContent(response, @"Acceptance\Fixtures\Sorting\Responses\GetSortedByMultipleAscendingResponse.json");
55+
await AssertResponseContent(response, @"Acceptance\Fixtures\Sorting\Responses\GetSortedByMultipleAscendingResponse.json", HttpStatusCode.OK);
5956
}
6057
}
6158

@@ -71,8 +68,7 @@ public async Task GetSortedByMultipleDescending()
7168
{
7269
var response = await SubmitGet(effortConnection, "users?sort=-lastName,-firstName");
7370

74-
response.StatusCode.Should().Be(HttpStatusCode.OK);
75-
await AssertResponseContent(response, @"Acceptance\Fixtures\Sorting\Responses\GetSortedByMultipleDescendingResponse.json");
71+
await AssertResponseContent(response, @"Acceptance\Fixtures\Sorting\Responses\GetSortedByMultipleDescendingResponse.json", HttpStatusCode.OK);
7672
}
7773
}
7874

@@ -88,8 +84,7 @@ public async Task GetSortedByMixedDirection()
8884
{
8985
var response = await SubmitGet(effortConnection, "users?sort=%2BlastName,-firstName");
9086

91-
response.StatusCode.Should().Be(HttpStatusCode.OK);
92-
await AssertResponseContent(response, @"Acceptance\Fixtures\Sorting\Responses\GetSortedByMixedDirectionResponse.json");
87+
await AssertResponseContent(response, @"Acceptance\Fixtures\Sorting\Responses\GetSortedByMixedDirectionResponse.json", HttpStatusCode.OK);
9388
}
9489
}
9590

@@ -105,8 +100,7 @@ public async Task GetSortedByUnknownColumn()
105100
{
106101
var response = await SubmitGet(effortConnection, "users?sort=%2Bfoobar");
107102

108-
response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
109-
await AssertResponseContent(response, @"Acceptance\Fixtures\Sorting\Responses\GetSortedByUnknownColumnResponse.json");
103+
await AssertResponseContent(response, @"Acceptance\Fixtures\Sorting\Responses\GetSortedByUnknownColumnResponse.json", HttpStatusCode.BadRequest);
110104
}
111105
}
112106

@@ -122,8 +116,7 @@ public async Task GetSortedBySameColumnTwice()
122116
{
123117
var response = await SubmitGet(effortConnection, "users?sort=%2BfirstName,%2BfirstName");
124118

125-
response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
126-
await AssertResponseContent(response, @"Acceptance\Fixtures\Sorting\Responses\GetSortedBySameColumnTwiceResponse.json");
119+
await AssertResponseContent(response, @"Acceptance\Fixtures\Sorting\Responses\GetSortedBySameColumnTwiceResponse.json", HttpStatusCode.BadRequest);
127120
}
128121
}
129122

@@ -139,8 +132,7 @@ public async Task GetSortedByColumnMissingDirection()
139132
{
140133
var response = await SubmitGet(effortConnection, "users?sort=firstName");
141134

142-
response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
143-
await AssertResponseContent(response, @"Acceptance\Fixtures\Sorting\Responses\GetSortedByColumnMissingDirectionResponse.json");
135+
await AssertResponseContent(response, @"Acceptance\Fixtures\Sorting\Responses\GetSortedByColumnMissingDirectionResponse.json", HttpStatusCode.BadRequest);
144136
}
145137
}
146138
}

JSONAPI.EntityFramework.Tests/Acceptance/UserGroupsTests.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ public async Task Get()
1616
{
1717
var response = await SubmitGet(effortConnection, "user-groups");
1818

19-
response.StatusCode.Should().Be(HttpStatusCode.OK);
20-
await AssertResponseContent(response, @"Acceptance\Fixtures\UserGroups\Responses\GetAllResponse.json");
19+
await AssertResponseContent(response, @"Acceptance\Fixtures\UserGroups\Responses\GetAllResponse.json", HttpStatusCode.OK);
2120
}
2221
}
2322
}

0 commit comments

Comments
 (0)