Skip to content

Commit a785415

Browse files
committed
5300 Test canceled updates aren't logged as failed
1 parent 91114b1 commit a785415

File tree

4 files changed

+34
-5
lines changed

4 files changed

+34
-5
lines changed

Hardware/Hardware/CardReader/StripeCardReader/StripeCardReaderService.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -499,10 +499,10 @@ extension StripeCardReaderService: BluetoothReaderDelegate {
499499

500500
public func reader(_ reader: Reader, didFinishInstallingUpdate update: ReaderSoftwareUpdate?, error: Error?) {
501501
if let error = error {
502-
let underlyingError = UnderlyingError(with: error)
503-
if underlyingError != .commandCancelled {
504-
softwareUpdateSubject.send(.failed(error: error))
505-
}
502+
softwareUpdateSubject.send(.failed(
503+
error: CardReaderServiceError.softwareUpdate(underlyingError: UnderlyingError(with: error),
504+
batteryLevel: reader.batteryLevel?.doubleValue))
505+
)
506506
softwareUpdateSubject.send(.available)
507507
} else {
508508
softwareUpdateSubject.send(.completed)

WooCommerce/Classes/ViewRelated/Dashboard/Settings/CardReadersV2/CardReaderSettingsConnectedViewModel.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ final class CardReaderSettingsConnectedViewModel: CardReaderSettingsPresentedVie
6363
case .installing(progress: let progress):
6464
self.readerUpdateProgress = progress
6565
case .failed(error: let error):
66+
if case CardReaderServiceError.softwareUpdate(underlyingError: let underlyingError, batteryLevel: _) = error,
67+
underlyingError == .readerSoftwareUpdateFailedInterrupted {
68+
// Update was cancelled, don't treat this as an error
69+
break
70+
}
6671
self.readerUpdateError = error
6772
self.completeCardReaderUpdate(success: false)
6873
ServiceLocator.analytics.track(.cardReaderSoftwareUpdateFailed)

WooCommerce/WooCommerceTests/Mocks/MockCardPresentPaymentsStoresManager.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,15 @@ extension MockCardPresentPaymentsStoresManager {
9797
}
9898

9999
func simulateCancelableUpdate(onCancel: @escaping () -> Void) {
100-
softwareUpdateSubject.send(.started(cancelable: MockFallibleCancelable(onCancel: onCancel)))
100+
softwareUpdateSubject.send(.started(cancelable: MockFallibleCancelable(onCancel: {
101+
onCancel()
102+
self.softwareUpdateSubject.send(
103+
.failed(error: CardReaderServiceError.softwareUpdate(
104+
underlyingError: .readerSoftwareUpdateFailedInterrupted,
105+
batteryLevel: 0.86
106+
))
107+
)
108+
})))
101109
}
102110

103111
func simulateUpdateStarted() {

WooCommerce/WooCommerceTests/ViewRelated/Dashboard/CardReaderSettings/CardReaderSettingsConnectedViewModelTests.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,4 +216,20 @@ final class CardReaderSettingsConnectedViewModelTests: XCTestCase {
216216
wait(for: [expectation], timeout: Constants.expectationTimeout)
217217
XCTAssert(analytics.receivedEvents.contains(WooAnalyticsStat.cardReaderSoftwareUpdateCanceled.rawValue))
218218
}
219+
220+
func test_WhenUpdateIsSuccessfullyCanceled_ViewModel_DoesNotLogTracksEvent_cardReaderSoftwareUpdateFailed() {
221+
// Given
222+
let expectation = self.expectation(description: #function)
223+
224+
mockStoresManager.simulateCancelableUpdate {
225+
expectation.fulfill()
226+
}
227+
228+
// When
229+
viewModel.cancelCardReaderUpdate()
230+
231+
// Then
232+
wait(for: [expectation], timeout: Constants.expectationTimeout)
233+
XCTAssertFalse(analytics.receivedEvents.contains(WooAnalyticsStat.cardReaderSoftwareUpdateFailed.rawValue))
234+
}
219235
}

0 commit comments

Comments
 (0)