Skip to content

Commit 110478d

Browse files
committed
Send load accounts in a dispatch group. Update tests
1 parent 183ec65 commit 110478d

File tree

3 files changed

+40
-6
lines changed

3 files changed

+40
-6
lines changed

Networking/NetworkingTests/Remote/StripeRemoteTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -305,8 +305,8 @@ final class StripeRemoteTests: XCTestCase {
305305
// Then
306306
XCTAssertTrue(result.isSuccess)
307307
let account = try result.get()
308-
XCTAssertEqual(account.isLiveAccount, true)
309-
XCTAssertEqual(account.isInTestMode, false)
308+
XCTAssertEqual(account.isLiveAccount, false)
309+
XCTAssertEqual(account.isInTestMode, true)
310310
}
311311

312312
/// Properly decodes live account in test mode stripe-account-live-test
@@ -327,7 +327,7 @@ final class StripeRemoteTests: XCTestCase {
327327
// Then
328328
XCTAssertTrue(result.isSuccess)
329329
let account = try result.get()
330-
XCTAssertEqual(account.isLiveAccount, true)
330+
XCTAssertEqual(account.isLiveAccount, false)
331331
XCTAssertEqual(account.isInTestMode, true)
332332
}
333333

Yosemite/Yosemite/Stores/CardPresentPaymentStore.swift

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -409,8 +409,40 @@ private extension CardPresentPaymentStore {
409409
/// Loads the account corresponding to the currently selected backend. Deletes the other (if it exists).
410410
///
411411
func loadAccounts(siteID: Int64, onCompletion: @escaping (Result<Void, Error>) -> Void) {
412-
loadWCPayAccount(siteID: siteID, onCompletion: onCompletion)
413-
loadStripeAccount(siteID: siteID, onCompletion: onCompletion)
412+
var error: Error? = nil
413+
414+
let group = DispatchGroup()
415+
group.enter()
416+
loadWCPayAccount(siteID: siteID, onCompletion: { result in
417+
switch result {
418+
case .failure(let loadError):
419+
DDLogError("⛔️ Error synchronizing WCPay Account: \(loadError)")
420+
error = loadError
421+
case .success():
422+
break
423+
}
424+
group.leave()
425+
})
426+
427+
group.enter()
428+
loadStripeAccount(siteID: siteID, onCompletion: {result in
429+
switch result {
430+
case .failure(let loadError):
431+
DDLogError("⛔️ Error synchronizing Stripe Account: \(loadError)")
432+
error = loadError
433+
case .success():
434+
break
435+
}
436+
group.leave()
437+
})
438+
439+
group.notify(queue: .main) {
440+
guard let error = error else {
441+
onCompletion(.success(()))
442+
return
443+
}
444+
onCompletion(.failure(error))
445+
}
414446
}
415447

416448
func loadWCPayAccount(siteID: Int64, onCompletion: @escaping (Result<Void, Error>) -> Void) {

Yosemite/YosemiteTests/Stores/CardPresentPaymentStoreTests.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ final class CardPresentPaymentStoreTests: XCTestCase {
263263
allowStripeIPP: false)
264264
let expectation = self.expectation(description: "Load Account error response")
265265
network.simulateResponse(requestUrlSuffix: "payments/accounts", filename: "generic_error")
266+
network.simulateResponse(requestUrlSuffix: "wc_stripe/account/summary", filename: "generic_error")
266267

267268
let action = CardPresentPaymentAction.loadAccounts(siteID: sampleSiteID, onCompletion: { result in
268269
XCTAssertTrue(result.isFailure)
@@ -285,6 +286,7 @@ final class CardPresentPaymentStoreTests: XCTestCase {
285286
allowStripeIPP: false)
286287
let expectation = self.expectation(description: "Load Account fetch response")
287288
network.simulateResponse(requestUrlSuffix: "payments/accounts", filename: "wcpay-account-complete")
289+
network.simulateResponse(requestUrlSuffix: "wc_stripe/account/summary", filename: "stripe-account-complete")
288290
let action = CardPresentPaymentAction.loadAccounts(siteID: sampleSiteID, onCompletion: { result in
289291
XCTAssertTrue(result.isSuccess)
290292
expectation.fulfill()
@@ -293,7 +295,7 @@ final class CardPresentPaymentStoreTests: XCTestCase {
293295
store.onAction(action)
294296
wait(for: [expectation], timeout: Constants.expectationTimeout)
295297

296-
XCTAssert(viewStorage.countObjects(ofType: Storage.PaymentGatewayAccount.self, matching: nil) == 1)
298+
XCTAssert(viewStorage.countObjects(ofType: Storage.PaymentGatewayAccount.self, matching: nil) == 2)
297299

298300
let storageAccount = viewStorage.loadPaymentGatewayAccount(
299301
siteID: sampleSiteID,

0 commit comments

Comments
 (0)