Skip to content

Commit f45f2c0

Browse files
authored
Merge pull request #185 from keefertaylor/errors
Convert TezosKitError to enum type
2 parents d642220 + 151b3c5 commit f45f2c0

22 files changed

Lines changed: 214 additions & 172 deletions

Extensions/PromiseKit/TezosNode/TezosNodeClient+Promises.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ extension TezosNodeClient {
295295
)
296296
case .failure(let error):
297297
return Promise { seal in
298-
seal.reject(TezosKitError(kind: .transactionFormationFailure, underlyingError: error.underlyingError))
298+
seal.reject(TezosKitError.transactionFormationFailure(underlyingError: error))
299299
}
300300
}
301301
}
@@ -339,7 +339,7 @@ extension TezosNodeClient {
339339
)
340340
case .failure(let error):
341341
return Promise { seal in
342-
seal.reject(TezosKitError(kind: .transactionFormationFailure, underlyingError: error.underlyingError))
342+
seal.reject(TezosKitError.transactionFormationFailure(underlyingError: error))
343343
}
344344
}
345345
}
@@ -374,7 +374,7 @@ extension TezosNodeClient {
374374
)
375375
case .failure(let error):
376376
return Promise { seal in
377-
seal.reject(TezosKitError(kind: .transactionFormationFailure, underlyingError: error.underlyingError))
377+
seal.reject(TezosKitError.transactionFormationFailure(underlyingError: error))
378378
}
379379
}
380380
}
@@ -405,7 +405,7 @@ extension TezosNodeClient {
405405
)
406406
case .failure(let error):
407407
return Promise { seal in
408-
seal.reject(TezosKitError(kind: .transactionFormationFailure, underlyingError: error.underlyingError))
408+
seal.reject(TezosKitError.transactionFormationFailure(underlyingError: error))
409409
}
410410
}
411411
}
@@ -437,7 +437,7 @@ extension TezosNodeClient {
437437
)
438438
case .failure(let error):
439439
return Promise { seal in
440-
seal.reject(TezosKitError(kind: .transactionFormationFailure, underlyingError: error.underlyingError))
440+
seal.reject(TezosKitError.transactionFormationFailure(underlyingError: error))
441441
}
442442
}
443443
}

Tests/UnitTests/Extensions/PromiseKit/NetworkClientTest+Promises.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ extension NetworkClientTest {
7979
headerFields: nil
8080
)
8181
fakeURLSession.data = "Result".data(using: .utf8)
82-
fakeURLSession.error = TezosKitError(kind: .unknown, underlyingError: nil)
82+
fakeURLSession.error = TezosKitError.unknown(description: nil)
8383

8484
let expectation = XCTestExpectation(description: "Promise is resolved")
8585
let rpc = RPC(endpoint: "/test", responseAdapterClass: StringResponseAdapter.self)

Tests/UnitTests/TezosKit/ConseilClientTests.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,27 +97,27 @@ final class ConseilClientTests: XCTestCase {
9797

9898
func testCombineResults_aNil() {
9999
let a: Result<[Transaction], TezosKitError>? = nil
100-
let b: Result<[Transaction], TezosKitError>? = .failure(TezosKitError(kind: .unknown))
100+
let b: Result<[Transaction], TezosKitError>? = .failure(.unknown(description: nil))
101101
XCTAssertNil(ConseilClient.combine(a, b))
102102
}
103103

104104
func testCombineResults_bNil() {
105-
let a: Result<[Transaction], TezosKitError>? = .failure(TezosKitError(kind: .unknown))
105+
let a: Result<[Transaction], TezosKitError>? = .failure(.unknown(description: nil))
106106
let b: Result<[Transaction], TezosKitError>? = nil
107107
XCTAssertNil(ConseilClient.combine(a, b))
108108
}
109109

110110
func testCombineResults_bothNoNil() {
111-
let a: Result<[Transaction], TezosKitError>? = .failure(TezosKitError(kind: .unknown))
112-
let b: Result<[Transaction], TezosKitError>? = .failure(TezosKitError(kind: .unknown))
111+
let a: Result<[Transaction], TezosKitError>? = .failure(.unknown(description: nil))
112+
let b: Result<[Transaction], TezosKitError>? = .failure(.unknown(description: nil))
113113
XCTAssertNotNil(ConseilClient.combine(a, b))
114114
}
115115

116116
func testCombineResults_bothFailure() {
117-
let errorA = TezosKitError(kind: .unexpectedResponse)
117+
let errorA = TezosKitError.unexpectedResponse(description: "unepected response")
118118
let a: Result<[Transaction], TezosKitError> = .failure(errorA)
119119

120-
let errorB = TezosKitError(kind: .invalidURL)
120+
let errorB = TezosKitError.invalidURL
121121
let b: Result<[Transaction], TezosKitError> = .failure(errorB)
122122

123123
guard let result = ConseilClient.combine(a, b) else {
@@ -133,7 +133,7 @@ final class ConseilClientTests: XCTestCase {
133133
}
134134

135135
func testCombineResults_aFailure() {
136-
let errorA = TezosKitError(kind: .unexpectedResponse)
136+
let errorA = TezosKitError.unexpectedResponse(description: "unepected response")
137137
let a: Result<[Transaction], TezosKitError> = .failure(errorA)
138138

139139
let b: Result<[Transaction], TezosKitError> = .success([.testTransaction])
@@ -153,7 +153,7 @@ final class ConseilClientTests: XCTestCase {
153153
func testCombineResults_bFailure() {
154154
let a: Result<[Transaction], TezosKitError> = .success([.testTransaction])
155155

156-
let errorB = TezosKitError(kind: .invalidURL)
156+
let errorB = TezosKitError.invalidURL
157157
let b: Result<[Transaction], TezosKitError> = .failure(errorB)
158158

159159
guard let result = ConseilClient.combine(a, b) else {

Tests/UnitTests/TezosKit/ForgingServiceTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class ForgingServiceTests: XCTestCase {
4646
case .success:
4747
XCTFail()
4848
case .failure(let error):
49-
XCTAssertEqual(error.kind, .localForgingNotSupportedForOperation)
49+
XCTAssertEqual(error, .localForgingNotSupportedForOperation)
5050
}
5151
forgeCompletionExpectation.fulfill()
5252
}

Tests/UnitTests/TezosKit/NetworkClientTest.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ class NetworkClientTest: XCTestCase {
113113
headerFields: nil
114114
)
115115
fakeURLSession.data = "Result".data(using: .utf8)
116-
fakeURLSession.error = TezosKitError(kind: .unknown, underlyingError: nil)
116+
fakeURLSession.error = TezosKitError.unknown(description: nil)
117117

118118
let expectation = XCTestExpectation(description: "Completion is Called")
119119
let rpc = RPC(endpoint: "/test", responseAdapterClass: StringResponseAdapter.self)

Tests/UnitTests/TezosKit/PreapplicationServiceTest.swift

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ final class PreapplicationServiceTest: XCTestCase {
77
private static let preapplyEndpoint = "/chains/main/blocks/" + .testBranch + "/helpers/preapply/operations"
88

99
// swiftlint:disable line_length
10+
private static let invalidPreapplicationResponseErrorID = "proto.003-PsddFKi3.contract.balance_too_low"
1011
private static let invalidPreapplicationResponse =
11-
"[{\"contents\":[{\"kind\":\"transaction\",\"source\":\"tz1XVJ8bZUXs7r5NV8dHvuiBhzECvLRLR3jW\",\"fee\":\"1272\",\"counter\":\"30802\",\"gas_limit\":\"10100\",\"storage_limit\":\"257\",\"amount\":\"10000000000000\",\"destination\":\"tz3WXYtyDUNL91qfiCJtVUX746QpNv5i5ve5\",\"metadata\":{\"balance_updates\":[{\"kind\":\"contract\",\"contract\":\"tz1XVJ8bZUXs7r5NV8dHvuiBhzECvLRLR3jW\",\"change\":\"-1272\"},{\"kind\":\"freezer\",\"category\":\"fees\",\"delegate\":\"tz1Ke2h7sDdakHJQh8WX4Z372du1KChsksyU\",\"level\":125,\"change\":\"1272\"}],\"operation_result\":{\"status\":\"failed\",\"errors\":[{\"kind\":\"temporary\",\"id\":\"proto.003-PsddFKi3.contract.balance_too_low\",\"contract\":\"tz1XVJ8bZUXs7r5NV8dHvuiBhzECvLRLR3jW\",\"balance\":\"98751713\",\"amount\":\"10000000000000\"}]}}}],\"signature\":\"edsigu16pv1NUsXuJkwWDAqvFDbhcsRAHbdxbYJcN7AShN4yDspRmsP5kgbzs2osTHGGDkyED3vjQFcbskv3BVESJ7tpchmbbop\"}]"
12+
"[{\"contents\":[{\"kind\":\"transaction\",\"source\":\"tz1XVJ8bZUXs7r5NV8dHvuiBhzECvLRLR3jW\",\"fee\":\"1272\",\"counter\":\"30802\",\"gas_limit\":\"10100\",\"storage_limit\":\"257\",\"amount\":\"10000000000000\",\"destination\":\"tz3WXYtyDUNL91qfiCJtVUX746QpNv5i5ve5\",\"metadata\":{\"balance_updates\":[{\"kind\":\"contract\",\"contract\":\"tz1XVJ8bZUXs7r5NV8dHvuiBhzECvLRLR3jW\",\"change\":\"-1272\"},{\"kind\":\"freezer\",\"category\":\"fees\",\"delegate\":\"tz1Ke2h7sDdakHJQh8WX4Z372du1KChsksyU\",\"level\":125,\"change\":\"1272\"}],\"operation_result\":{\"status\":\"failed\",\"errors\":[{\"kind\":\"temporary\",\"id\":\"\(invalidPreapplicationResponseErrorID)\",\"contract\":\"tz1XVJ8bZUXs7r5NV8dHvuiBhzECvLRLR3jW\",\"balance\":\"98751713\",\"amount\":\"10000000000000\"}]}}}],\"signature\":\"edsigu16pv1NUsXuJkwWDAqvFDbhcsRAHbdxbYJcN7AShN4yDspRmsP5kgbzs2osTHGGDkyED3vjQFcbskv3BVESJ7tpchmbbop\"}]"
1213
// swiftlint:enable line_length
1314

1415
func testPreapplicationValidOperation() {
@@ -49,7 +50,10 @@ final class PreapplicationServiceTest: XCTestCase {
4950
XCTFail()
5051
return
5152
}
52-
XCTAssertEqual(result.kind, .preapplicationError)
53+
XCTAssertEqual(
54+
result,
55+
.preapplicationError(description: PreapplicationServiceTest.invalidPreapplicationResponseErrorID)
56+
)
5357
preapplicationCompletionExpectation.fulfill()
5458
}
5559

@@ -71,7 +75,7 @@ final class PreapplicationServiceTest: XCTestCase {
7175
XCTFail()
7276
return
7377
}
74-
XCTAssertEqual(result.kind, .unexpectedResponse)
78+
XCTAssertEqual(result, .unexpectedResponse(description: "Could not parse response"))
7579
preapplicationCompletionExpectation.fulfill()
7680
}
7781

@@ -92,7 +96,12 @@ final class PreapplicationServiceTest: XCTestCase {
9296
input: PreapplicationServiceTest.invalidPreapplicationResponse.data(using: .utf8)!
9397
)!
9498
let error = PreapplicationService.preapplicationError(from: json)!
95-
XCTAssertEqual(error.kind, .preapplicationError)
96-
XCTAssert(error.underlyingError!.contains("contract.balance_too_low"))
99+
100+
switch error {
101+
case .preapplicationError(let errorText):
102+
XCTAssert(errorText.contains("contract.balance_too_low"))
103+
default:
104+
XCTFail("Wrong error type reported")
105+
}
97106
}
98107
}

Tests/UnitTests/TezosKit/RPCResponseHandlerTest.swift

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,7 @@ class RPCResponseHandlerTest: XCTestCase {
4545

4646
switch result {
4747
case .failure(let tezosKitError):
48-
XCTAssertEqual(tezosKitError.kind, .unexpectedRequestFormat)
49-
XCTAssertEqual(tezosKitError.underlyingError, RPCResponseHandlerTest.testErrorString)
48+
XCTAssertEqual(tezosKitError, .unexpectedRequestFormat(description: RPCResponseHandlerTest.testErrorString))
5049
case .success:
5150
XCTFail()
5251
}
@@ -63,8 +62,7 @@ class RPCResponseHandlerTest: XCTestCase {
6362

6463
switch result {
6564
case .failure(let tezosKitError):
66-
XCTAssertEqual(tezosKitError.kind, .unexpectedResponse)
67-
XCTAssertEqual(tezosKitError.underlyingError, RPCResponseHandlerTest.testErrorString)
65+
XCTAssertEqual(tezosKitError, .unexpectedResponse(description: RPCResponseHandlerTest.testErrorString))
6866
case .success:
6967
XCTFail()
7068
}
@@ -81,8 +79,7 @@ class RPCResponseHandlerTest: XCTestCase {
8179

8280
switch result {
8381
case .failure(let tezosKitError):
84-
XCTAssertEqual(tezosKitError.kind, .unknown)
85-
XCTAssertEqual(tezosKitError.underlyingError, RPCResponseHandlerTest.testErrorString)
82+
XCTAssertEqual(tezosKitError, .unknown(description: RPCResponseHandlerTest.testErrorString))
8683
case .success:
8784
XCTFail()
8885
}
@@ -100,8 +97,12 @@ class RPCResponseHandlerTest: XCTestCase {
10097

10198
switch result {
10299
case .failure(let tezosKitError):
103-
XCTAssertEqual(tezosKitError.kind, .rpcError)
104-
XCTAssertEqual(tezosKitError.underlyingError, testError.localizedDescription)
100+
switch tezosKitError {
101+
case .rpcError(let description):
102+
XCTAssertEqual(description, testError.localizedDescription)
103+
default:
104+
XCTFail("Wrong error type reported.")
105+
}
105106
case .success:
106107
XCTFail()
107108
}
@@ -135,8 +136,7 @@ class RPCResponseHandlerTest: XCTestCase {
135136

136137
switch result {
137138
case .failure(let tezosKitError):
138-
XCTAssertEqual(tezosKitError.kind, .unexpectedResponse)
139-
XCTAssertEqual(tezosKitError.underlyingError, nil)
139+
XCTAssertEqual(tezosKitError, .unexpectedResponse(description: "No data in response"))
140140
case .success:
141141
XCTFail()
142142
}
@@ -153,8 +153,7 @@ class RPCResponseHandlerTest: XCTestCase {
153153

154154
switch result {
155155
case .failure(let tezosKitError):
156-
XCTAssertEqual(tezosKitError.kind, .unexpectedResponse)
157-
XCTAssertEqual(tezosKitError.underlyingError, nil)
156+
XCTAssertEqual(tezosKitError, .unexpectedResponse(description: "Could not parse response"))
158157
case .success:
159158
XCTFail()
160159
}

Tests/UnitTests/TezosKit/TezosKitErrorCodesTest.swift

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)