Skip to content

Commit 1b8404e

Browse files
committed
add fixture to noentity tests
1 parent 8f877cd commit 1b8404e

File tree

2 files changed

+41
-22
lines changed

2 files changed

+41
-22
lines changed

test/NoEntityFrameworkTests/Acceptance/Extensibility/NoEntityFrameworkTests.cs

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,38 +4,30 @@
44
using System.Net.Http.Headers;
55
using System.Threading.Tasks;
66
using JsonApiDotNetCore.Serialization;
7-
using JsonApiDotNetCoreExample.Data;
87
using JsonApiDotNetCoreExample.Models;
98
using JsonApiDotNetCoreExampleTests.Helpers.Extensions;
10-
using Microsoft.AspNetCore.Hosting;
11-
using Microsoft.AspNetCore.TestHost;
129
using Newtonsoft.Json;
1310
using Xunit;
1411

1512
namespace NoEntityFrameworkTests.Acceptance.Extensibility
1613
{
17-
public class NoEntityFrameworkTests
14+
public class NoEntityFrameworkTests : IClassFixture<TestFixture>
1815
{
19-
private readonly TestServer _server;
20-
private readonly AppDbContext _context;
16+
private readonly TestFixture _fixture;
2117

22-
public NoEntityFrameworkTests()
18+
public NoEntityFrameworkTests(TestFixture fixture)
2319
{
24-
var builder = new WebHostBuilder()
25-
.UseStartup<TestStartup>();
26-
_server = new TestServer(builder);
27-
_context = _server.GetService<AppDbContext>();
28-
_context.Database.EnsureCreated();
20+
_fixture = fixture;
2921
}
3022

3123
[Fact]
3224
public async Task Can_Get_TodoItems()
3325
{
3426
// arrange
35-
_context.TodoItems.Add(new TodoItem());
36-
_context.SaveChanges();
27+
_fixture.Context.TodoItems.Add(new TodoItem());
28+
_fixture.Context.SaveChanges();
3729

38-
var client = _server.CreateClient();
30+
var client = _fixture.Server.CreateClient();
3931

4032
var httpMethod = new HttpMethod("GET");
4133
var route = $"/api/v1/custom-todo-items";
@@ -45,7 +37,7 @@ public async Task Can_Get_TodoItems()
4537
// act
4638
var response = await client.SendAsync(request);
4739
var responseBody = await response.Content.ReadAsStringAsync();
48-
var deserializedBody = _server.GetService<IJsonApiDeSerializer>()
40+
var deserializedBody = _fixture.Server.GetService<IJsonApiDeSerializer>()
4941
.DeserializeList<TodoItem>(responseBody);
5042

5143
// assert
@@ -59,10 +51,10 @@ public async Task Can_Get_TodoItems_By_Id()
5951
{
6052
// arrange
6153
var todoItem = new TodoItem();
62-
_context.TodoItems.Add(todoItem);
63-
_context.SaveChanges();
54+
_fixture.Context.TodoItems.Add(todoItem);
55+
_fixture.Context.SaveChanges();
6456

65-
var client = _server.CreateClient();
57+
var client = _fixture.Server.CreateClient();
6658

6759
var httpMethod = new HttpMethod("GET");
6860
var route = $"/api/v1/custom-todo-items/{todoItem.Id}";
@@ -72,7 +64,7 @@ public async Task Can_Get_TodoItems_By_Id()
7264
// act
7365
var response = await client.SendAsync(request);
7466
var responseBody = await response.Content.ReadAsStringAsync();
75-
var deserializedBody = (TodoItem)_server.GetService<IJsonApiDeSerializer>()
67+
var deserializedBody = (TodoItem)_fixture.Server.GetService<IJsonApiDeSerializer>()
7668
.Deserialize(responseBody);
7769

7870
// assert
@@ -86,7 +78,7 @@ public async Task Can_Create_TodoItems()
8678
{
8779
// arrange
8880
var description = Guid.NewGuid().ToString();
89-
var client = _server.CreateClient();
81+
var client = _fixture.Server.CreateClient();
9082
var httpMethod = new HttpMethod("POST");
9183
var route = $"/api/v1/custom-todo-items/";
9284
var content = new
@@ -109,7 +101,7 @@ public async Task Can_Create_TodoItems()
109101
// act
110102
var response = await client.SendAsync(request);
111103
var responseBody = await response.Content.ReadAsStringAsync();
112-
var deserializedBody = (TodoItem)_server.GetService<IJsonApiDeSerializer>()
104+
var deserializedBody = (TodoItem)_fixture.Server.GetService<IJsonApiDeSerializer>()
113105
.Deserialize(responseBody);
114106

115107
// assert
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using JsonApiDotNetCoreExample.Data;
2+
using JsonApiDotNetCoreExampleTests.Helpers.Extensions;
3+
using Microsoft.AspNetCore.Hosting;
4+
using Microsoft.AspNetCore.TestHost;
5+
using System;
6+
7+
namespace NoEntityFrameworkTests
8+
{
9+
public class TestFixture : IDisposable
10+
{
11+
public AppDbContext Context { get; private set; }
12+
public TestServer Server { get; private set; }
13+
14+
public TestFixture()
15+
{
16+
var builder = new WebHostBuilder().UseStartup<TestStartup>();
17+
Server = new TestServer(builder);
18+
Context = Server.GetService<AppDbContext>();
19+
Context.Database.EnsureCreated();
20+
}
21+
22+
public void Dispose()
23+
{
24+
Server.Dispose();
25+
}
26+
}
27+
}

0 commit comments

Comments
 (0)