Skip to content

Commit 0d925cf

Browse files
committed
cleans up NetworkServiceMock
1 parent 77f0797 commit 0d925cf

File tree

3 files changed

+29
-27
lines changed

3 files changed

+29
-27
lines changed

DBNetworkStack.xcodeproj/project.pbxproj

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,8 @@
168168
children = (
169169
C6A5DED81D76A05300BC38B1 /* Helpers */,
170170
C6A5DED21D760C9E00BC38B1 /* Mocks */,
171-
C6E5A4D51E2FBDDD00F966DB /* NetworkServiceTests */,
172-
C6E5A4D61E2FBE0000F966DB /* RessourceTests */,
171+
C6E5A4D51E2FBDDD00F966DB /* NetworkService */,
172+
C6E5A4D61E2FBE0000F966DB /* Ressource */,
173173
C6F7E30E1E49DC4900FA625F /* NetworkTaskMockTests.swift */,
174174
C699E0761D917501006FE7C6 /* NetworkErrorTest.swift */,
175175
7C653BC81E09325500199993 /* NetworkResponseProcessorTest.swift */,
@@ -254,26 +254,26 @@
254254
name = NetworkAccess;
255255
sourceTree = "<group>";
256256
};
257-
C6E5A4D51E2FBDDD00F966DB /* NetworkServiceTests */ = {
257+
C6E5A4D51E2FBDDD00F966DB /* NetworkService */ = {
258258
isa = PBXGroup;
259259
children = (
260260
C61E77881E49A57A00D55BB2 /* NetworkServiceMockTest.swift */,
261261
C61E778A1E49B53700D55BB2 /* RetryNetworkserviceTest.swift */,
262262
C60BE6A01D6B3807006B0364 /* NetworkServiceTest.swift */,
263263
C6C395951E0422AF00413AD2 /* ModifyRequestNetworkService.swift */,
264264
);
265-
name = NetworkServiceTests;
265+
name = NetworkService;
266266
sourceTree = "<group>";
267267
};
268-
C6E5A4D61E2FBE0000F966DB /* RessourceTests */ = {
268+
C6E5A4D61E2FBE0000F966DB /* Ressource */ = {
269269
isa = PBXGroup;
270270
children = (
271271
C65AA9A321187234007529BF /* ContainerNetworkTaskTest.swift */,
272272
C69188681EE688F700BAD320 /* DecodableResoureTest.swift */,
273273
C60425121D7803CA00FD3B38 /* ResourceTest.swift */,
274274
C66C7B971FE96EA8009B8C78 /* ResourceInspectTest.swift */,
275275
);
276-
name = RessourceTests;
276+
name = Ressource;
277277
sourceTree = "<group>";
278278
};
279279
/* End PBXGroup section */
@@ -352,6 +352,7 @@
352352
developmentRegion = English;
353353
hasScannedForEncodings = 0;
354354
knownRegions = (
355+
English,
355356
Base,
356357
);
357358
mainGroup = C60BE6511D6B2BF3006B0364;

Source/NetworkServiceMock.swift

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,9 @@ import Dispatch
2626

2727
struct NetworkServiceMockCallback {
2828
let onErrorCallback: ((NetworkError) -> Void)?
29-
let onSuccess: ((Data, HTTPURLResponse) -> Void)?
3029
let onTypedSuccess: ((Any, HTTPURLResponse) -> Void)?
3130

3231
init<Result>(resource: Resource<Result>, onCompletionWithResponse: @escaping (Result, HTTPURLResponse) -> Void, onError: @escaping (NetworkError) -> Void) {
33-
onSuccess = { data, response in
34-
guard let result = try? resource.parse(data) else {
35-
fatalError("Could not parse data into matching result type")
36-
}
37-
onCompletionWithResponse(result, response)
38-
}
3932
onTypedSuccess = { anyResult, response in
4033
guard let typedResult = anyResult as? Result else {
4134
fatalError("Extected type of \(Result.self) but got \(anyResult.self)")
@@ -104,10 +97,20 @@ struct NetworkServiceMockCallback {
10497
- seealso: `NetworkService`
10598
*/
10699
public final class NetworkServiceMock: NetworkService {
100+
107101
/// Count of all started requests
108-
public var requestCount: Int = 0
102+
public var requestCount: Int {
103+
return lastRequests.count
104+
}
105+
109106
/// Last executed request
110-
public var lastRequest: URLRequest?
107+
public var lastRequest: URLRequest? {
108+
return lastRequests.last
109+
}
110+
111+
/// All executed requests.
112+
public private(set) var lastRequests: [URLRequest] = []
113+
111114
/// Set this to hava a custom networktask returned by the mock
112115
public var nextNetworkTask: NetworkTask?
113116

@@ -144,9 +147,7 @@ public final class NetworkServiceMock: NetworkService {
144147
@discardableResult
145148
public func request<Result>(queue: DispatchQueue, resource: Resource<Result>, onCompletionWithResponse: @escaping (Result, HTTPURLResponse) -> Void,
146149
onError: @escaping (NetworkError) -> Void) -> NetworkTask {
147-
148-
lastRequest = resource.request
149-
requestCount += 1
150+
lastRequests.append(resource.request)
150151
callbacks.append(NetworkServiceMockCallback(
151152
resource: resource,
152153
onCompletionWithResponse: onCompletionWithResponse,
@@ -164,15 +165,6 @@ public final class NetworkServiceMock: NetworkService {
164165
callbacks.removeFirst().onErrorCallback?(error)
165166
}
166167

167-
/// Will return a successful request, by using the given data as a server response.
168-
///
169-
/// - Parameters:
170-
/// - data: the mock response from the server.
171-
/// - httpResponse: the mock `HTTPURLResponse` from the server. `HTTPURLResponse()` by default
172-
public func returnSuccess(with data: Data, httpResponse: HTTPURLResponse = HTTPURLResponse()) {
173-
callbacks.removeFirst().onSuccess?(data, httpResponse)
174-
}
175-
176168
/// Will return a successful request, by using the given type `T` as serialized result of a request.
177169
///
178170
/// **Warning:** This will crash if type `T` does not match your expected ResponseType of your current request

Tests/DBNetworkStackTests/NetworkServiceMockTest.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,15 @@ class NetworkServiceMockTest: XCTestCase {
4343
XCTAssertEqual(networkServiceMock.requestCount, 2)
4444
}
4545

46+
func testLastRequests() {
47+
//When
48+
networkServiceMock.request(resource, onCompletion: { _ in }, onError: { _ in })
49+
networkServiceMock.request(resource, onCompletion: { _ in }, onError: { _ in })
50+
51+
//Then
52+
XCTAssertEqual(networkServiceMock.lastRequests, [resource.request, resource.request])
53+
}
54+
4655
func testReturnSuccessWithData() {
4756
//Given
4857
var capturedResult: Int?

0 commit comments

Comments
 (0)