1- using System ;
21using System . Collections . Generic ;
32using System . Net ;
43using System . Net . Http ;
54using System . Net . Http . Headers ;
65using System . Threading . Tasks ;
7- using Bogus ;
86using JsonApiDotNetCore . Serialization ;
9- using JsonApiDotNetCoreExample . Data ;
107using JsonApiDotNetCoreExample . Models ;
118using JsonApiDotNetCoreExampleTests . Helpers . Extensions ;
12- using Microsoft . AspNetCore . Hosting ;
13- using Microsoft . AspNetCore . TestHost ;
149using Newtonsoft . Json ;
1510using Xunit ;
1611
1712namespace ResourceEntitySeparationExampleTests . Acceptance . Extensibility
1813{
19- public class ResourceEntitySeparationExampleTests
14+ public class ResourceEntitySeparationExampleTests : IClassFixture < TestFixture >
2015 {
21- private readonly TestServer _server ;
22- private readonly AppDbContext _context ;
16+ private readonly TestFixture _fixture ;
2317
24- private Faker < StudentEntity > _studentFaker ;
25-
26- public ResourceEntitySeparationExampleTests ( )
18+ public ResourceEntitySeparationExampleTests ( TestFixture fixture )
2719 {
28- var builder = new WebHostBuilder ( )
29- . UseStartup < TestStartup > ( ) ;
30- _server = new TestServer ( builder ) ;
31- _context = _server . GetService < AppDbContext > ( ) ;
32- _context . Database . EnsureCreated ( ) ;
33-
34- _studentFaker = new Faker < StudentEntity > ( )
35- . RuleFor ( s => s . FirstName , f => f . Name . FirstName ( ) )
36- . RuleFor ( s => s . LastName , f => f . Name . LastName ( ) ) ;
20+ _fixture = fixture ;
3721 }
38-
22+
3923 [ Fact ]
4024 public async Task Can_Get_Students ( )
4125 {
4226 // arrange
43- _context . Students . Add ( _studentFaker . Generate ( ) ) ;
44- _context . SaveChanges ( ) ;
45-
46- var client = _server . CreateClient ( ) ;
27+ _fixture . Context . Students . Add ( _fixture . StudentFaker . Generate ( ) ) ;
28+ _fixture . Context . SaveChanges ( ) ;
4729
4830 var httpMethod = new HttpMethod ( "GET" ) ;
4931 var route = $ "/api/v1/students";
5032
5133 var request = new HttpRequestMessage ( httpMethod , route ) ;
5234
5335 // act
54- var response = await client . SendAsync ( request ) ;
36+ var response = await _fixture . Server . CreateClient ( ) . SendAsync ( request ) ;
5537 var responseBody = await response . Content . ReadAsStringAsync ( ) ;
56- var deserializedBody = _server . GetService < IJsonApiDeSerializer > ( )
38+ var deserializedBody = _fixture . Server . GetService < IJsonApiDeSerializer > ( )
5739 . DeserializeList < StudentDto > ( responseBody ) ;
5840
5941 // assert
@@ -66,21 +48,19 @@ public async Task Can_Get_Students()
6648 public async Task Can_Get_Students_By_Id ( )
6749 {
6850 // arrange
69- var student = _studentFaker . Generate ( ) ;
70- _context . Students . Add ( student ) ;
71- _context . SaveChanges ( ) ;
72-
73- var client = _server . CreateClient ( ) ;
51+ var student = _fixture . StudentFaker . Generate ( ) ;
52+ _fixture . Context . Students . Add ( student ) ;
53+ _fixture . Context . SaveChanges ( ) ;
7454
7555 var httpMethod = new HttpMethod ( "GET" ) ;
7656 var route = $ "/api/v1/students/{ student . Id } ";
7757
7858 var request = new HttpRequestMessage ( httpMethod , route ) ;
7959
8060 // act
81- var response = await client . SendAsync ( request ) ;
61+ var response = await _fixture . Server . CreateClient ( ) . SendAsync ( request ) ;
8262 var responseBody = await response . Content . ReadAsStringAsync ( ) ;
83- var deserializedBody = ( StudentDto ) _server . GetService < IJsonApiDeSerializer > ( )
63+ var deserializedBody = ( StudentDto ) _fixture . Server . GetService < IJsonApiDeSerializer > ( )
8464 . Deserialize ( responseBody ) ;
8565
8666 // assert
@@ -93,8 +73,7 @@ public async Task Can_Get_Students_By_Id()
9373 public async Task Can_Create_Students ( )
9474 {
9575 // arrange
96- var student = _studentFaker . Generate ( ) ;
97- var client = _server . CreateClient ( ) ;
76+ var student = _fixture . StudentFaker . Generate ( ) ;
9877 var httpMethod = new HttpMethod ( "POST" ) ;
9978 var route = $ "/api/v1/students/";
10079 var content = new
@@ -114,9 +93,9 @@ public async Task Can_Create_Students()
11493 request . Content . Headers . ContentType = new MediaTypeHeaderValue ( "application/vnd.api+json" ) ;
11594
11695 // act
117- var response = await client . SendAsync ( request ) ;
96+ var response = await _fixture . Server . CreateClient ( ) . SendAsync ( request ) ;
11897 var responseBody = await response . Content . ReadAsStringAsync ( ) ;
119- var deserializedBody = ( StudentDto ) _server . GetService < IJsonApiDeSerializer > ( )
98+ var deserializedBody = ( StudentDto ) _fixture . Server . GetService < IJsonApiDeSerializer > ( )
12099 . Deserialize ( responseBody ) ;
121100
122101 // assert
0 commit comments