diff --git a/WooCommerce/WooCommerceTests/Mocks/MockCardReaderSettingsAlerts.swift b/WooCommerce/WooCommerceTests/Mocks/MockCardReaderSettingsAlerts.swift index f2da180fa72..e237b2436b7 100644 --- a/WooCommerce/WooCommerceTests/Mocks/MockCardReaderSettingsAlerts.swift +++ b/WooCommerce/WooCommerceTests/Mocks/MockCardReaderSettingsAlerts.swift @@ -34,16 +34,16 @@ extension MockCardReaderSettingsAlerts: BluetoothReaderConnnectionAlertsProvidin typealias AlertDetails = CardPresentPaymentsModalViewModel func scanningForReader(cancel: @escaping () -> Void) -> CardPresentPaymentsModalViewModel { - if mode == .cancelScanning { + switch mode { + case .cancelScanning: cancel() - } - - if mode == .continueSearchingAfterConnectionFailure { + case .continueSearchingAfterConnectionFailure: /// If we've already presented a found reader once before, cancel this second search - /// if didPresentFoundReader { cancel() } + default: + break } return MockCardPresentPaymentsModalViewModel() @@ -92,13 +92,7 @@ extension MockCardReaderSettingsAlerts: BluetoothReaderConnnectionAlertsProvidin func connectingFailed(error: Error, retrySearch: @escaping () -> Void, cancelSearch: @escaping () -> Void) -> CardPresentPaymentsModalViewModel { - if mode == .continueSearchingAfterConnectionFailure { - retrySearch() - } - - if mode == .cancelSearchingAfterConnectionFailure { - cancelSearch() - } + retryOrCancelIfNeeded(retry: retrySearch, cancel: cancelSearch) return MockCardPresentPaymentsModalViewModel() } @@ -107,37 +101,19 @@ extension MockCardReaderSettingsAlerts: BluetoothReaderConnnectionAlertsProvidin openWCSettings: (() -> Void)?, retrySearch: @escaping () -> Void, cancelSearch: @escaping () -> Void) -> CardPresentPaymentsModalViewModel { - if mode == .continueSearchingAfterConnectionFailure { - retrySearch() - } - - if mode == .cancelSearchingAfterConnectionFailure { - cancelSearch() - } + retryOrCancelIfNeeded(retry: retrySearch, cancel: cancelSearch) return MockCardPresentPaymentsModalViewModel() } func connectingFailedInvalidPostalCode(retrySearch: @escaping () -> Void, cancelSearch: @escaping () -> Void) -> CardPresentPaymentsModalViewModel { - if mode == .continueSearchingAfterConnectionFailure { - retrySearch() - } - - if mode == .cancelSearchingAfterConnectionFailure { - cancelSearch() - } + retryOrCancelIfNeeded(retry: retrySearch, cancel: cancelSearch) return MockCardPresentPaymentsModalViewModel() } func connectingFailedCriticallyLowBattery(retrySearch: @escaping () -> Void, cancelSearch: @escaping () -> Void) -> CardPresentPaymentsModalViewModel { - if mode == .continueSearchingAfterConnectionFailure { - retrySearch() - } - - if mode == .cancelSearchingAfterConnectionFailure { - cancelSearch() - } + retryOrCancelIfNeeded(retry: retrySearch, cancel: cancelSearch) return MockCardPresentPaymentsModalViewModel() } @@ -149,12 +125,7 @@ extension MockCardReaderSettingsAlerts: BluetoothReaderConnnectionAlertsProvidin func updatingFailedLowBattery(batteryLevel: Double?, retrySearch: @escaping () -> Void, close: @escaping () -> Void) -> CardPresentPaymentsModalViewModel { - if mode == .continueSearchingAfterConnectionFailure { - retrySearch() - } - if mode == .cancelSearchingAfterConnectionFailure { - close() - } + retryOrCancelIfNeeded(retry: retrySearch, cancel: close) return MockCardPresentPaymentsModalViewModel() } @@ -188,6 +159,17 @@ extension MockCardReaderSettingsAlerts: BluetoothReaderConnnectionAlertsProvidin } return MockCardPresentPaymentsModalViewModel() } + + private func retryOrCancelIfNeeded(retry: @escaping () -> Void, cancel: @escaping () -> Void) { + switch mode { + case .cancelSearchingAfterConnectionFailure: + cancel() + case .continueSearchingAfterConnectionFailure: + retry() + default: + break + } + } } diff --git a/WooCommerce/WooCommerceTests/UnitTests.xctestplan b/WooCommerce/WooCommerceTests/UnitTests.xctestplan index 6eda876918d..1c703848a0e 100644 --- a/WooCommerce/WooCommerceTests/UnitTests.xctestplan +++ b/WooCommerce/WooCommerceTests/UnitTests.xctestplan @@ -59,7 +59,6 @@ }, { "skippedTests" : [ - "CardReaderConnectionControllerTests", "InAppPurchaseStoreTests", "InAppPurchaseStoreTests\/test_iap_supported_in_canada()", "InAppPurchaseStoreTests\/test_iap_supported_in_us()", diff --git a/WooCommerce/WooCommerceTests/ViewRelated/CardPresentPayments/CardReaderConnectionControllerTests.swift b/WooCommerce/WooCommerceTests/ViewRelated/CardPresentPayments/CardReaderConnectionControllerTests.swift index 9de8d884bb2..00031a67912 100644 --- a/WooCommerce/WooCommerceTests/ViewRelated/CardPresentPayments/CardReaderConnectionControllerTests.swift +++ b/WooCommerce/WooCommerceTests/ViewRelated/CardPresentPayments/CardReaderConnectionControllerTests.swift @@ -22,10 +22,11 @@ final class CardReaderConnectionControllerTests: XCTestCase { storageManager = MockStorageManager() locationService = MockLocationService(status: .authorized) - let paymentGateway = storageManager.viewStorage.insertNewObject(ofType: StoragePaymentGatewayAccount.self) - paymentGateway.update(with: .fake().copy(siteID: sampleSiteID, gatewayID: "woocommerce-payments", isCardPresentEligible: true)) - storageManager.viewStorage.saveIfNeeded() - + storageManager.performAndSave({ [weak self] storage in + guard let self else { return } + let paymentGateway = storageManager.viewStorage.insertNewObject(ofType: StoragePaymentGatewayAccount.self) + paymentGateway.update(with: .fake().copy(siteID: sampleSiteID, gatewayID: "woocommerce-payments", isCardPresentEligible: true)) + }, completion: nil, on: .main) analyticsProvider = MockAnalyticsProvider() analytics = WooAnalytics(analyticsProvider: analyticsProvider)