1
+ using System . Globalization ;
1
2
using System . Net ;
2
3
using System . Net . Http . Json ;
3
- using ErrorOr ;
4
4
using JetBrains . Annotations ;
5
+ using Microsoft . AspNetCore . Http . HttpResults ;
5
6
using Microsoft . Extensions . Options ;
6
7
using Moq ;
7
8
using PetSearch . API . Clients ;
8
9
using PetSearch . API . Configurations ;
10
+ using PetSearch . API . Problems ;
9
11
using PetSearch . API . Exceptions ;
10
12
using PetSearch . API . Models ;
11
13
using PetSearch . API . Tests . Data ;
@@ -26,6 +28,7 @@ public class MapBoxClientTest
26
28
private readonly Mock < IOptions < MapBoxConfiguration > > _mapBoxOptionsMock ;
27
29
private readonly string _accessTokenValue ;
28
30
private readonly LocationDto _expectedDefaultLocationDto ;
31
+ private readonly IExpectedProblems _expectedProblems ;
29
32
30
33
public MapBoxClientTest ( )
31
34
{
@@ -40,6 +43,7 @@ public MapBoxClientTest()
40
43
} ;
41
44
_mapBoxOptionsMock = new Mock < IOptions < MapBoxConfiguration > > ( ) ;
42
45
_mapBoxOptionsMock . Setup ( options => options . Value ) . Returns ( mapBoxConfiguration ) ;
46
+ _expectedProblems = new MapBoxProblems ( ) ;
43
47
}
44
48
45
49
[ Fact ]
@@ -51,12 +55,12 @@ public async Task GetLocationFromZipCode_ShouldReturnALocationDto_IfZipcodeIsVal
51
55
HttpClient mockHttpClient = _mockHttp . ToHttpClient ( ) ;
52
56
mockHttpClient . BaseAddress = _mapBoxUri ;
53
57
54
- var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object ) ;
58
+
59
+ var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object , _expectedProblems ) ;
55
60
56
61
// Act
57
62
var result = await mapBoxClient . GetLocationFromZipCode ( DefaultZipCode ) ;
58
- var locationDto = result . Value ;
59
-
63
+ LocationDto ? locationDto = Assert . IsType < Ok < LocationDto > > ( result . Result ) . Value ;
60
64
// Assert
61
65
Assert . NotNull ( locationDto ) ;
62
66
Assert . IsType < LocationDto > ( locationDto ) ;
@@ -73,7 +77,7 @@ public async Task GetLocationFromZipCode_ShouldCallMapBoxUrlFromMapBoxConfigUrl(
73
77
HttpClient mockHttpClient = _mockHttp . ToHttpClient ( ) ;
74
78
mockHttpClient . BaseAddress = _mapBoxUri ;
75
79
76
- var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object ) ;
80
+ var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object , _expectedProblems ) ;
77
81
78
82
// Act
79
83
await mapBoxClient . GetLocationFromZipCode ( DefaultZipCode ) ;
@@ -92,7 +96,7 @@ public async Task GetLocationFromZipCode_ShouldCallMapBoxUrlWithAccessToken()
92
96
HttpClient mockHttpClient = _mockHttp . ToHttpClient ( ) ;
93
97
mockHttpClient . BaseAddress = _mapBoxUri ;
94
98
95
- var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object ) ;
99
+ var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object , _expectedProblems ) ;
96
100
97
101
// Act
98
102
await mapBoxClient . GetLocationFromZipCode ( DefaultZipCode ) ;
@@ -112,7 +116,7 @@ public async Task GetLocationFromZipCode_ShouldCallMapBoxUrlWithPassedZipcode()
112
116
HttpClient mockHttpClient = _mockHttp . ToHttpClient ( ) ;
113
117
mockHttpClient . BaseAddress = _mapBoxUri ;
114
118
115
- var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object ) ;
119
+ var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object , _expectedProblems ) ;
116
120
117
121
// Act
118
122
await mapBoxClient . GetLocationFromZipCode ( DefaultZipCode ) ;
@@ -124,9 +128,9 @@ public async Task GetLocationFromZipCode_ShouldCallMapBoxUrlWithPassedZipcode()
124
128
}
125
129
126
130
[ Theory ]
127
- [ ClassData ( typeof ( MapBoxClientErrorsData ) ) ]
131
+ [ ClassData ( typeof ( MapBoxClientProblemsData ) ) ]
128
132
public async Task GetLocationFromZipCode_ShouldReturnCorrectError_IfResultIsUnsuccessful (
129
- HttpStatusCode statusCode , Error expectedError
133
+ HttpStatusCode statusCode
130
134
)
131
135
{
132
136
// Arrange
@@ -135,14 +139,15 @@ public async Task GetLocationFromZipCode_ShouldReturnCorrectError_IfResultIsUnsu
135
139
HttpClient mockHttpClient = _mockHttp . ToHttpClient ( ) ;
136
140
mockHttpClient . BaseAddress = _mapBoxUri ;
137
141
138
- var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object ) ;
142
+ var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object , _expectedProblems ) ;
139
143
140
144
// Act
141
- var result = await mapBoxClient . GetLocationFromZipCode ( DefaultZipCode ) ;
145
+ Results < Ok < LocationDto > , ProblemHttpResult > result = await mapBoxClient . GetLocationFromZipCode ( DefaultZipCode ) ;
142
146
147
+ ProblemHttpResult problemResult = Assert . IsType < ProblemHttpResult > ( result . Result ) ;
143
148
// Assert
144
149
_mockHttp . Expect ( MapBoxConfiguration . Url ) . Respond ( statusCode ) ;
145
- Assert . Equal ( expectedError , result . FirstError ) ;
150
+ Assert . Equal ( ( int ) statusCode , problemResult . StatusCode ) ;
146
151
}
147
152
148
153
[ Fact ]
@@ -154,7 +159,7 @@ public async Task GetLocationFromZipCode_ShouldThrowForbiddenAccess_IfApiStatusC
154
159
HttpClient mockHttpClient = _mockHttp . ToHttpClient ( ) ;
155
160
mockHttpClient . BaseAddress = _mapBoxUri ;
156
161
157
- var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object ) ;
162
+ var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object , _expectedProblems ) ;
158
163
159
164
// Act
160
165
await Assert . ThrowsAsync < ForbiddenAccessException > (
@@ -171,11 +176,12 @@ public async Task GetLocationFromCoordinates_ShouldReturnALocationDto()
171
176
HttpClient mockHttpClient = _mockHttp . ToHttpClient ( ) ;
172
177
mockHttpClient . BaseAddress = _mapBoxUri ;
173
178
174
- var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object ) ;
179
+ var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object , _expectedProblems ) ;
175
180
176
181
// Act
177
- var result = await mapBoxClient . GetLocationFromCoordinates ( DefaultLongitude , DefaultLatitude ) ;
178
- var locationDto = result . Value ;
182
+ Results < Ok < LocationDto > , ProblemHttpResult > result =
183
+ await mapBoxClient . GetLocationFromCoordinates ( DefaultLongitude , DefaultLatitude ) ;
184
+ LocationDto ? locationDto = Assert . IsType < Ok < LocationDto > > ( result . Result ) . Value ;
179
185
180
186
// Assert
181
187
Assert . NotNull ( locationDto ) ;
@@ -193,7 +199,7 @@ public async Task GetLocationFromCoordinates_ShouldCallMapBoxUrlFromMapBoxConfig
193
199
HttpClient mockHttpClient = _mockHttp . ToHttpClient ( ) ;
194
200
mockHttpClient . BaseAddress = _mapBoxUri ;
195
201
196
- var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object ) ;
202
+ var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object , _expectedProblems ) ;
197
203
198
204
// Act
199
205
await mapBoxClient . GetLocationFromCoordinates ( DefaultLongitude , DefaultLatitude ) ;
@@ -212,7 +218,7 @@ public async Task GetLocationFromCoordinates_ShouldCallMapBoxUrlWithAccessToken(
212
218
HttpClient mockHttpClient = _mockHttp . ToHttpClient ( ) ;
213
219
mockHttpClient . BaseAddress = _mapBoxUri ;
214
220
215
- var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object ) ;
221
+ var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object , _expectedProblems ) ;
216
222
217
223
// Act
218
224
await mapBoxClient . GetLocationFromCoordinates ( DefaultLongitude , DefaultLatitude ) ;
@@ -232,22 +238,22 @@ public async Task GetLocationFromCoordinates_ShouldCallMapBoxUrlWithPassedCoordi
232
238
HttpClient mockHttpClient = _mockHttp . ToHttpClient ( ) ;
233
239
mockHttpClient . BaseAddress = _mapBoxUri ;
234
240
235
- var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object ) ;
241
+ var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object , _expectedProblems ) ;
236
242
237
243
// Act
238
244
await mapBoxClient . GetLocationFromCoordinates ( DefaultLongitude , DefaultLatitude ) ;
239
245
240
246
// Assert
241
247
Assert . Equal ( 1 , _mockHttp . GetMatchCount ( request ) ) ;
242
248
_mockHttp . Expect ( MapBoxConfiguration . Url )
243
- . WithContent ( DefaultLongitude . ToString ( ) )
244
- . WithContent ( DefaultLatitude . ToString ( ) ) ;
249
+ . WithContent ( DefaultLongitude . ToString ( CultureInfo . InvariantCulture ) )
250
+ . WithContent ( DefaultLatitude . ToString ( CultureInfo . InvariantCulture ) ) ;
245
251
}
246
252
247
253
[ Theory ]
248
- [ ClassData ( typeof ( MapBoxClientErrorsData ) ) ]
254
+ [ ClassData ( typeof ( MapBoxClientProblemsData ) ) ]
249
255
public async Task GetLocationFromCoordinates_ShouldReturnCorrectError_IfResultIsUnsuccessful (
250
- HttpStatusCode statusCode , Error expectedError
256
+ HttpStatusCode statusCode
251
257
)
252
258
{
253
259
// Arrange
@@ -256,14 +262,17 @@ public async Task GetLocationFromCoordinates_ShouldReturnCorrectError_IfResultIs
256
262
HttpClient mockHttpClient = _mockHttp . ToHttpClient ( ) ;
257
263
mockHttpClient . BaseAddress = _mapBoxUri ;
258
264
259
- var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object ) ;
265
+ var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object , _expectedProblems ) ;
260
266
261
267
// Act
262
- var result = await mapBoxClient . GetLocationFromCoordinates ( DefaultLongitude , DefaultLatitude ) ;
268
+ Results < Ok < LocationDto > , ProblemHttpResult > result =
269
+ await mapBoxClient . GetLocationFromCoordinates ( DefaultLongitude , DefaultLatitude ) ;
270
+
271
+ ProblemHttpResult problemResult = Assert . IsType < ProblemHttpResult > ( result . Result ) ;
263
272
264
273
// Assert
265
274
_mockHttp . Expect ( MapBoxConfiguration . Url ) . Respond ( statusCode ) ;
266
- Assert . Equal ( expectedError , result . FirstError ) ;
275
+ Assert . Equal ( ( int ) statusCode , problemResult . StatusCode ) ;
267
276
}
268
277
269
278
[ Fact ]
@@ -275,7 +284,7 @@ public async Task GetLocationFromCoordinates_ShouldThrowForbiddenAccess_IfApiSta
275
284
HttpClient mockHttpClient = _mockHttp . ToHttpClient ( ) ;
276
285
mockHttpClient . BaseAddress = _mapBoxUri ;
277
286
278
- var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object ) ;
287
+ var mapBoxClient = new MapBoxClient ( mockHttpClient , _mapBoxOptionsMock . Object , _expectedProblems ) ;
279
288
280
289
// Act
281
290
await Assert . ThrowsAsync < ForbiddenAccessException > (
0 commit comments