Skip to content

Commit 78cb337

Browse files
committed
Update account creation to use wrapped errors
1 parent a106c00 commit 78cb337

File tree

2 files changed

+17
-20
lines changed

2 files changed

+17
-20
lines changed

Modules/Sources/Networking/Remote/AccountRemote.swift

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,11 @@ public class AccountRemote: Remote, AccountRemoteProtocol {
189189
let result: CreateAccountResult = try await enqueue(request)
190190
return .success(result)
191191
} catch {
192-
guard let dotcomError = error as? DotcomError else {
192+
if let networkError = error as? NetworkError {
193+
return .failure(CreateAccountError(error: networkError))
194+
} else {
193195
return .failure(.unknown(error: error as NSError))
194196
}
195-
return .failure(CreateAccountError(dotcomError: dotcomError))
196197
}
197198
}
198199

@@ -247,26 +248,22 @@ public enum CreateAccountError: Error, Equatable {
247248
case invalidUsername
248249
case invalidEmail
249250
case invalidPassword(message: String?)
250-
case unexpected(error: DotcomError)
251+
case unexpected(error: NetworkError)
251252
case unknown(error: NSError)
252253

253-
/// Decodable Initializer.
254+
/// NetworkError Initializer.
254255
///
255-
init(dotcomError error: DotcomError) {
256-
if case let .unknown(code, message) = error {
257-
switch code {
258-
case Constants.emailExists:
259-
self = .emailExists
260-
case Constants.invalidEmail:
261-
self = .invalidEmail
262-
case Constants.invalidPassword:
263-
self = .invalidPassword(message: message)
264-
case Constants.invalidUsername, Constants.usernameExists:
265-
self = .invalidUsername
266-
default:
267-
self = .unexpected(error: error)
268-
}
269-
} else {
256+
init(error: NetworkError) {
257+
switch error.apiErrorCode {
258+
case Constants.emailExists:
259+
self = .emailExists
260+
case Constants.invalidEmail:
261+
self = .invalidEmail
262+
case Constants.invalidPassword:
263+
self = .invalidPassword(message: error.apiErrorMessage)
264+
case Constants.invalidUsername, Constants.usernameExists:
265+
self = .invalidUsername
266+
default:
270267
self = .unexpected(error: error)
271268
}
272269
}

Modules/Tests/YosemiteTests/Mocks/Networking/Remote/MockAccountRemote.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ extension MockAccountRemote: AccountRemoteProtocol {
154154
clientSecret: String) async -> Result<CreateAccountResult, CreateAccountError> {
155155
guard let result = createAccountResult else {
156156
XCTFail("Could not find result for creating an account.")
157-
return .failure(.unexpected(error: .empty))
157+
return .failure(.unexpected(error: .notFound(response: nil)))
158158
}
159159
return result
160160
}

0 commit comments

Comments
 (0)