1+ using System . Net ;
2+ using System . Net . Http ;
3+ using System . Threading . Tasks ;
4+ using JsonApiDotNetCore . Models ;
5+ using JsonApiDotNetCoreExample . Models ;
6+ using Newtonsoft . Json ;
7+ using Xunit ;
8+ using Person = JsonApiDotNetCoreExample . Models . Person ;
9+ using JsonApiDotNetCore . Configuration ;
10+
11+ namespace JsonApiDotNetCoreExampleTests . Acceptance . Spec . DocumentTests
12+ {
13+ public sealed class Links : FunctionalTestCollection < StandardApplicationFactory >
14+ {
15+ public Links ( StandardApplicationFactory factory ) : base ( factory ) { }
16+
17+ [ Fact ]
18+ public async Task GET_RelativeLinks_True_Returns_RelativeLinks ( )
19+ {
20+ // Arrange
21+ var person = new Person
22+ {
23+ Id = 123 ,
24+ FirstName = "John" ,
25+ LastName = "Doe" ,
26+ Age = 57 ,
27+ Gender = Gender . Male ,
28+ Category = "Family"
29+ } ;
30+
31+ _dbContext . People . RemoveRange ( _dbContext . People ) ;
32+ _dbContext . People . Add ( person ) ;
33+ _dbContext . SaveChanges ( ) ;
34+
35+ var httpMethod = new HttpMethod ( "GET" ) ;
36+ var route = $ "http://localhost/api/v1/people/{ person . Id } ";
37+
38+ var request = new HttpRequestMessage ( httpMethod , route ) ;
39+
40+ var options = ( JsonApiOptions ) _factory . GetService < IJsonApiOptions > ( ) ;
41+ options . RelativeLinks = true ;
42+
43+ // Act
44+ var response = await _factory . Client . SendAsync ( request ) ;
45+ var responseString = await response . Content . ReadAsStringAsync ( ) ;
46+ var document = JsonConvert . DeserializeObject < Document > ( responseString ) ;
47+ var expectedOwnerSelfLink = $ "/api/v1/people/{ person . Id } ";
48+
49+ // Assert
50+ Assert . Equal ( HttpStatusCode . OK , response . StatusCode ) ;
51+ Assert . Equal ( expectedOwnerSelfLink , document . Links . Self ) ;
52+ }
53+
54+ [ Fact ]
55+ public async Task GET_RelativeLinks_False_Returns_HostsLinks ( )
56+ {
57+ // Arrange
58+ var person = new Person
59+ {
60+ Id = 123 ,
61+ FirstName = "John" ,
62+ LastName = "Doe" ,
63+ Age = 57 ,
64+ Gender = Gender . Male ,
65+ Category = "Family"
66+ } ;
67+
68+ _dbContext . People . RemoveRange ( _dbContext . People ) ;
69+ _dbContext . People . Add ( person ) ;
70+ _dbContext . SaveChanges ( ) ;
71+
72+ var httpMethod = new HttpMethod ( "GET" ) ;
73+ var route = $ "http://localhost/api/v1/people/{ person . Id } ";
74+
75+ var request = new HttpRequestMessage ( httpMethod , route ) ;
76+
77+ var options = ( JsonApiOptions ) _factory . GetService < IJsonApiOptions > ( ) ;
78+ options . RelativeLinks = false ;
79+
80+ // Act
81+ var response = await _factory . Client . SendAsync ( request ) ;
82+ var responseString = await response . Content . ReadAsStringAsync ( ) ;
83+ var document = JsonConvert . DeserializeObject < Document > ( responseString ) ;
84+ var expectedOwnerSelfLink = $ "http://localhost/api/v1/people/{ person . Id } ";
85+
86+ // Assert
87+ Assert . Equal ( HttpStatusCode . OK , response . StatusCode ) ;
88+ Assert . Equal ( expectedOwnerSelfLink , document . Links . Self ) ;
89+ }
90+ }
91+ }
0 commit comments