Skip to content

Commit 8d297a4

Browse files
committed
Better error handling coverage
1 parent 79a1151 commit 8d297a4

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

Sources/Request/Request/Request.swift

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,14 +154,16 @@ public struct AnyRequest<ResponseType>/*: ObservableObject, Identifiable*/ where
154154

155155
// PERFORM REQUEST
156156
URLSession.shared.dataTask(with: request) { data, res, err in
157-
if res != nil {
158-
let statusCode = (res as! HTTPURLResponse).statusCode
157+
if let res = res as? HTTPURLResponse {
158+
let statusCode = res.statusCode
159159
if statusCode < 200 || statusCode >= 300 {
160-
if self.onError != nil {
161-
self.onError!(RequestError(statusCode: statusCode, error: data))
160+
if let onError = self.onError {
161+
onError(RequestError(statusCode: statusCode, error: data))
162162
return
163163
}
164164
}
165+
} else if let err = err, let onError = self.onError {
166+
onError(RequestError(statusCode: -1, error: err.localizedDescription.data(using: .utf8)))
165167
}
166168
if let data = data {
167169
if let onData = self.onData {

Tests/RequestTests/RequestTests.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,23 @@ final class RequestTests: XCTestCase {
176176
waitForExpectations(timeout: 10000)
177177
XCTAssert(success)
178178
}
179+
180+
func testError() {
181+
let expectation = self.expectation(description: #function)
182+
var success = false
183+
184+
Request {
185+
Url("https://jsonplaceholder.typicode./todos")
186+
}
187+
.onError { err in
188+
print(err)
189+
success = true
190+
expectation.fulfill()
191+
}
192+
.call()
193+
waitForExpectations(timeout: 10000)
194+
XCTAssert(success)
195+
}
179196

180197
static var allTests = [
181198
("simpleRequest", testSimpleRequest),
@@ -186,5 +203,6 @@ final class RequestTests: XCTestCase {
186203
("requestGroup", testRequestGroup),
187204
("requestChain", testRequestChain),
188205
("anyRequest", testAnyRequest),
206+
("testError", testError),
189207
]
190208
}

0 commit comments

Comments
 (0)