@@ -4,8 +4,7 @@ import XCTest
44final class EndpointsTests : XCTestCase {
55 func testDataSuccess( ) async throws {
66 let service = EndpointService (
7- domain: . mockDomain,
8- session: MockSession ( statusCode: 200 )
7+ domain: . mockDomain
98 )
109
1110 let ( data, response) = try await service. perform ( . mockData)
@@ -15,8 +14,7 @@ final class EndpointsTests: XCTestCase {
1514
1615 func testJSONSuccess( ) async throws {
1716 let service = EndpointService (
18- domain: . mockDomain,
19- session: MockSession ( statusCode: 200 )
17+ domain: . mockDomain
2018 )
2119
2220 let ( _, response) = try await service. perform ( . mockJSON( filename: " gist " ) )
@@ -25,8 +23,7 @@ final class EndpointsTests: XCTestCase {
2523
2624 func testBadStatusCode( ) async {
2725 let service = EndpointService (
28- domain: . mockDomain,
29- session: MockSession ( statusCode: 404 )
26+ domain: . mockDomain( code: 404 )
3027 )
3128
3229 do {
@@ -41,8 +38,7 @@ final class EndpointsTests: XCTestCase {
4138
4239 func testCorruptJSON( ) async throws {
4340 let service = EndpointService (
44- domain: . mockDomain,
45- session: MockSession ( statusCode: 200 )
41+ domain: . mockDomain
4642 )
4743
4844 do {
@@ -57,8 +53,7 @@ final class EndpointsTests: XCTestCase {
5753
5854 func testMisTypeJSON( ) async throws {
5955 let service = EndpointService (
60- domain: . mockDomain,
61- session: MockSession ( statusCode: 200 )
56+ domain: . mockDomain
6257 )
6358
6459 do {
@@ -73,8 +68,7 @@ final class EndpointsTests: XCTestCase {
7368
7469 func testPostJSON( ) async throws {
7570 let service = EndpointService (
76- domain: . mockDomain,
77- session: MockSession ( statusCode: 200 )
71+ domain: . mockDomain
7872 )
7973
8074 let ( _, response) = try await service. perform ( . mockEncodable)
@@ -83,8 +77,7 @@ final class EndpointsTests: XCTestCase {
8377
8478 func testPostJSONGetJSON( ) async throws {
8579 let service = EndpointService (
86- domain: . mockDomain,
87- session: MockSession ( statusCode: 200 )
80+ domain: . mockDomain
8881 )
8982
9083 let ( result, response) = try await service. perform ( . mockCodable)
@@ -159,22 +152,19 @@ extension Endpoint where Self == MockJSONEndpoint {
159152}
160153
161154private struct MockDomain : Domain {
162- func urlRequest< E> ( for endpoint: E ) async throws -> URLRequest where E: Endpoint {
155+ var statusCode : Int
156+ let urlSession = URLSession ( configuration: . ephemeral)
157+
158+ func baseUrl< E> ( for endpoint: E ) async throws -> URL where E : Endpoint {
163159 guard let url = Bundle . module. url ( forResource: endpoint. request. path, withExtension: " json " ) else {
164160 throw EndpointError . badEndpoint ( " Mock file missing from bundle: \( endpoint. request) " )
165161 }
166-
167- return URLRequest ( url: url)
162+ return url
168163 }
169- }
170-
171- extension Domain where Self == MockDomain {
172- static var mockDomain : Self { . init( ) }
173- }
174164
175- private struct MockSession : EndpointSession {
176- var urlSession : URLSession = . init ( configuration : . ephemeral )
177- var statusCode : Int = 200
165+ func urlRequest < E > ( for endpoint : E ) async throws -> URLRequest where E : Endpoint {
166+ try await URLRequest ( url : baseUrl ( for : endpoint ) )
167+ }
178168
179169 func data( for request: URLRequest ) async throws -> ( Data , URLResponse ) {
180170 let data = try Data ( contentsOf: request. url!)
@@ -187,3 +177,10 @@ private struct MockSession: EndpointSession {
187177 return ( data, response)
188178 }
189179}
180+
181+ extension Domain where Self == MockDomain {
182+ static var mockDomain : Self { . init( statusCode: 200 ) }
183+ static func mockDomain( code: Int ) -> Self {
184+ . init( statusCode: code)
185+ }
186+ }
0 commit comments