diff --git a/WooCommerce/Classes/POS/Analytics/POSCollectOrderPaymentAnalytics.swift b/WooCommerce/Classes/POS/Analytics/POSCollectOrderPaymentAnalytics.swift index fdfc51a0a62..135a6b87326 100644 --- a/WooCommerce/Classes/POS/Analytics/POSCollectOrderPaymentAnalytics.swift +++ b/WooCommerce/Classes/POS/Analytics/POSCollectOrderPaymentAnalytics.swift @@ -1,7 +1,7 @@ import protocol WooFoundation.Analytics import Yosemite -final class POSCollectOrderPaymentAnalytics: CollectOrderPaymentAnalyticsTracking { +final class POSCollectOrderPaymentAnalytics: POSCollectOrderPaymentAnalyticsTracking { var connectedReaderModel: String? private var customerInteractionStarted: Double = 0 @@ -126,15 +126,3 @@ private extension POSCollectOrderPaymentAnalytics { resetProcessingPaymentTracking() } } - -// Protocol conformance. These events are not needed for IPP, only for POS. -// https://github.com/woocommerce/woocommerce-ios/issues/15149 -extension CollectOrderPaymentAnalytics { - func trackCustomerInteractionStarted() { } - func trackOrderSyncSuccess() { } - func trackCardReaderReady() { } - func trackCardReaderTapped() { } - func trackCheckoutTapped() { } - func resetCheckoutTapCountTracker() { } - func trackSuccessfulCashPayment() { } -} diff --git a/WooCommerce/Classes/POS/Analytics/POSCollectOrderPaymentAnalyticsTracking.swift b/WooCommerce/Classes/POS/Analytics/POSCollectOrderPaymentAnalyticsTracking.swift new file mode 100644 index 00000000000..5dd4699bc9b --- /dev/null +++ b/WooCommerce/Classes/POS/Analytics/POSCollectOrderPaymentAnalyticsTracking.swift @@ -0,0 +1,9 @@ +protocol POSCollectOrderPaymentAnalyticsTracking: CollectOrderPaymentAnalyticsTracking { + func trackCustomerInteractionStarted() + func trackOrderSyncSuccess() + func trackCardReaderReady() + func trackCardReaderTapped() + func trackCheckoutTapped() + func resetCheckoutTapCountTracker() + func trackSuccessfulCashPayment() +} diff --git a/WooCommerce/Classes/POS/Models/PointOfSaleAggregateModel.swift b/WooCommerce/Classes/POS/Models/PointOfSaleAggregateModel.swift index 31a4cdd4f15..fa53c1b5331 100644 --- a/WooCommerce/Classes/POS/Models/PointOfSaleAggregateModel.swift +++ b/WooCommerce/Classes/POS/Models/PointOfSaleAggregateModel.swift @@ -62,7 +62,7 @@ protocol PointOfSaleAggregateModelProtocol { private let cardPresentPaymentService: CardPresentPaymentFacade private let orderController: PointOfSaleOrderControllerProtocol private let analytics: Analytics - private let collectOrderPaymentAnalyticsTracker: CollectOrderPaymentAnalyticsTracking + private let collectOrderPaymentAnalyticsTracker: POSCollectOrderPaymentAnalyticsTracking private var startPaymentOnCardReaderConnection: AnyCancellable? private var cardReaderDisconnection: AnyCancellable? @@ -73,7 +73,7 @@ protocol PointOfSaleAggregateModelProtocol { cardPresentPaymentService: CardPresentPaymentFacade, orderController: PointOfSaleOrderControllerProtocol, analytics: Analytics = ServiceLocator.analytics, - collectOrderPaymentAnalyticsTracker: CollectOrderPaymentAnalyticsTracking, + collectOrderPaymentAnalyticsTracker: POSCollectOrderPaymentAnalyticsTracking, paymentState: PointOfSalePaymentState = .card(.idle)) { self.itemsController = itemsController self.cardPresentPaymentService = cardPresentPaymentService diff --git a/WooCommerce/Classes/POS/Presentation/PointOfSaleEntryPointView.swift b/WooCommerce/Classes/POS/Presentation/PointOfSaleEntryPointView.swift index 8720004773d..87fa03d97a6 100644 --- a/WooCommerce/Classes/POS/Presentation/PointOfSaleEntryPointView.swift +++ b/WooCommerce/Classes/POS/Presentation/PointOfSaleEntryPointView.swift @@ -12,7 +12,7 @@ struct PointOfSaleEntryPointView: View { onPointOfSaleModeActiveStateChange: @escaping ((Bool) -> Void), cardPresentPaymentService: CardPresentPaymentFacade, orderController: PointOfSaleOrderControllerProtocol, - collectOrderPaymentAnalyticsTracker: CollectOrderPaymentAnalyticsTracking) { + collectOrderPaymentAnalyticsTracker: POSCollectOrderPaymentAnalyticsTracking) { self.onPointOfSaleModeActiveStateChange = onPointOfSaleModeActiveStateChange let posModel = PointOfSaleAggregateModel( diff --git a/WooCommerce/Classes/ViewRelated/Orders/Collect Payments/CollectOrderPaymentAnalytics.swift b/WooCommerce/Classes/ViewRelated/Orders/Collect Payments/CollectOrderPaymentAnalytics.swift index 12b60825fe1..36705b70015 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/Collect Payments/CollectOrderPaymentAnalytics.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/Collect Payments/CollectOrderPaymentAnalytics.swift @@ -24,14 +24,6 @@ protocol CollectOrderPaymentAnalyticsTracking { func trackReceiptPrintCanceled() func trackReceiptPrintFailed(error: Error) - - func trackCustomerInteractionStarted() - func trackOrderSyncSuccess() - func trackCardReaderReady() - func trackCardReaderTapped() - func trackCheckoutTapped() - func resetCheckoutTapCountTracker() - func trackSuccessfulCashPayment() } final class CollectOrderPaymentAnalytics: CollectOrderPaymentAnalyticsTracking { diff --git a/WooCommerce/WooCommerce.xcodeproj/project.pbxproj b/WooCommerce/WooCommerce.xcodeproj/project.pbxproj index be52c617002..ce2649500f1 100644 --- a/WooCommerce/WooCommerce.xcodeproj/project.pbxproj +++ b/WooCommerce/WooCommerce.xcodeproj/project.pbxproj @@ -1629,6 +1629,8 @@ 68E952D22875A44B0095A23D /* CardReaderType+Manual.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68E952D12875A44B0095A23D /* CardReaderType+Manual.swift */; }; 68ED2BD62ADD2C8C00ECA88D /* LineDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68ED2BD52ADD2C8C00ECA88D /* LineDetailView.swift */; }; 68F151E12C0DA7910082AEC8 /* CartItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68F151E02C0DA7910082AEC8 /* CartItem.swift */; }; + 68F68A502D6730E200BB9568 /* POSCollectOrderPaymentAnalyticsTracking.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68F68A4F2D6730DF00BB9568 /* POSCollectOrderPaymentAnalyticsTracking.swift */; }; + 68F68A522D67365900BB9568 /* MockPOSCollectOrderPaymentAnalyticsTracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68F68A512D67365900BB9568 /* MockPOSCollectOrderPaymentAnalyticsTracker.swift */; }; 68F896422D5E4323000B308B /* POSCollectOrderPaymentAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68F896412D5E4321000B308B /* POSCollectOrderPaymentAnalytics.swift */; }; 740382DB2267D94100A627F4 /* LargeImageTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 740382D92267D94100A627F4 /* LargeImageTableViewCell.swift */; }; 740382DC2267D94100A627F4 /* LargeImageTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 740382DA2267D94100A627F4 /* LargeImageTableViewCell.xib */; }; @@ -4782,6 +4784,8 @@ 68E952D12875A44B0095A23D /* CardReaderType+Manual.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CardReaderType+Manual.swift"; sourceTree = ""; }; 68ED2BD52ADD2C8C00ECA88D /* LineDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineDetailView.swift; sourceTree = ""; }; 68F151E02C0DA7910082AEC8 /* CartItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CartItem.swift; sourceTree = ""; }; + 68F68A4F2D6730DF00BB9568 /* POSCollectOrderPaymentAnalyticsTracking.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POSCollectOrderPaymentAnalyticsTracking.swift; sourceTree = ""; }; + 68F68A512D67365900BB9568 /* MockPOSCollectOrderPaymentAnalyticsTracker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockPOSCollectOrderPaymentAnalyticsTracker.swift; sourceTree = ""; }; 68F896412D5E4321000B308B /* POSCollectOrderPaymentAnalytics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POSCollectOrderPaymentAnalytics.swift; sourceTree = ""; }; 6A58DEEBCA91CDE69F439754 /* Pods_Woo_Watch_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Woo_Watch_App.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 6DC4526F9A7357761197EBF0 /* Pods_WooCommerceTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_WooCommerceTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -7729,6 +7733,7 @@ 200BA15A2CF0A2130006DC5B /* MockPointOfSaleItemsService.swift */, 20FCBCE22CE24F5D0082DCA3 /* MockPointOfSaleAggregateModel.swift */, 207D2D222CFDCCBF00F79204 /* MockPOSOrderableItem.swift */, + 68F68A512D67365900BB9568 /* MockPOSCollectOrderPaymentAnalyticsTracker.swift */, ); path = Mocks; sourceTree = ""; @@ -7746,6 +7751,7 @@ 02D1D2D82CD3CD710069A93F /* Analytics */ = { isa = PBXGroup; children = ( + 68F68A4F2D6730DF00BB9568 /* POSCollectOrderPaymentAnalyticsTracking.swift */, 68F896412D5E4321000B308B /* POSCollectOrderPaymentAnalytics.swift */, 02D1D2D92CD3CD8D0069A93F /* WooAnalyticsEvent+PointOfSale.swift */, ); @@ -16167,6 +16173,7 @@ 203163AF2C1C5C6B001C96DA /* PointOfSaleCardPresentPaymentConnectingFailedUpdateAddressAlertViewModel.swift in Sources */, EE45E2BF2A409E250085F227 /* UIColor+Tooltip.swift in Sources */, B5FD111621D3F13700560344 /* BordersView.swift in Sources */, + 68F68A502D6730E200BB9568 /* POSCollectOrderPaymentAnalyticsTracking.swift in Sources */, 68E674AF2A4DACD50034BA1E /* UpgradeTopBarView.swift in Sources */, 0262DA5B23A244830029AF30 /* Product+ShippingSettingsViewModels.swift in Sources */, 02D29A8E29F7C26000473D6D /* InputAccessoryView.swift in Sources */, @@ -17351,6 +17358,7 @@ 20FCBCDF2CE241810082DCA3 /* PointOfSaleAggregateModelTests.swift in Sources */, 03D7985C2A94EC7700809B0E /* MockCollectOrderPaymentAnalyticsTracker.swift in Sources */, 021E2A2023AA274700B1DE07 /* ProductBackordersSettingListSelectorCommandTests.swift in Sources */, + 68F68A522D67365900BB9568 /* MockPOSCollectOrderPaymentAnalyticsTracker.swift in Sources */, 0235BFDB246E99A700778909 /* ProductFormActionsFactory+NonEmptyBottomSheetActionsTests.swift in Sources */, DE7B17F52C0DF02800A6C7D8 /* InboxEligibilityUseCaseTests.swift in Sources */, 020BE76723B49FE9007FE54C /* AztecBoldFormatBarCommandTests.swift in Sources */, diff --git a/WooCommerce/WooCommerceTests/Mocks/MockCollectOrderPaymentAnalyticsTracker.swift b/WooCommerce/WooCommerceTests/Mocks/MockCollectOrderPaymentAnalyticsTracker.swift index 5c6e4aba671..e847a61f645 100644 --- a/WooCommerce/WooCommerceTests/Mocks/MockCollectOrderPaymentAnalyticsTracker.swift +++ b/WooCommerce/WooCommerceTests/Mocks/MockCollectOrderPaymentAnalyticsTracker.swift @@ -53,33 +53,4 @@ final class MockCollectOrderPaymentAnalyticsTracker: CollectOrderPaymentAnalytic func trackReceiptPrintFailed(error: Error) { // no-op } - - func trackCustomerInteractionStarted() { - // no-op - } - - func trackOrderSyncSuccess() { - // no-op - } - - func trackCardReaderReady() { - // no-op - } - - func trackCardReaderTapped() { - // no-op - } - - var didCallTrackCheckoutTapped = false - func trackCheckoutTapped() { - didCallTrackCheckoutTapped = true - } - - func resetCheckoutTapCountTracker() { - // no-op - } - - func trackSuccessfulCashPayment() { - // no-op - } } diff --git a/WooCommerce/WooCommerceTests/POS/Mocks/MockPOSCollectOrderPaymentAnalyticsTracker.swift b/WooCommerce/WooCommerceTests/POS/Mocks/MockPOSCollectOrderPaymentAnalyticsTracker.swift new file mode 100644 index 00000000000..c1a14eef099 --- /dev/null +++ b/WooCommerce/WooCommerceTests/POS/Mocks/MockPOSCollectOrderPaymentAnalyticsTracker.swift @@ -0,0 +1,76 @@ +@testable import WooCommerce +import struct Yosemite.PaymentIntent + +final class MockPOSCollectOrderPaymentAnalyticsTracker: POSCollectOrderPaymentAnalyticsTracking { + var didCallTrackCheckoutTapped = false + + func trackCustomerInteractionStarted() { + // no-op + } + + func trackOrderSyncSuccess() { + // no-op + } + + func trackCardReaderReady() { + // no-op + } + + func trackCardReaderTapped() { + // no-op + } + + func trackCheckoutTapped() { + didCallTrackCheckoutTapped = true + } + + func resetCheckoutTapCountTracker() { + // no-op + } + + func trackSuccessfulCashPayment() { + // no-op + } + + var connectedReaderModel: String? + + func preflightResultReceived(_ result: WooCommerce.CardReaderPreflightResult?) { + // no-op + } + + func trackProcessingCompletion(intent: Yosemite.PaymentIntent) { + // no-op + } + + func trackSuccessfulCardPayment(capturedPaymentData: WooCommerce.CardPresentCapturedPaymentData) { + // no-op + } + + func trackPaymentFailure(with error: any Error) { + // no-op + } + + func trackPaymentCancelation(cancelationSource: WooCommerce.WooAnalyticsEvent.InPersonPayments.CancellationSource) { + // no-op + } + + func trackEmailTapped() { + // no-op + } + + func trackReceiptPrintTapped() { + // no-op + } + + func trackReceiptPrintSuccess() { + // no-op + } + + func trackReceiptPrintCanceled() { + // no-op + } + + func trackReceiptPrintFailed(error: any Error) { + // no-op + } +} diff --git a/WooCommerce/WooCommerceTests/POS/Models/PointOfSaleAggregateModelTests.swift b/WooCommerce/WooCommerceTests/POS/Models/PointOfSaleAggregateModelTests.swift index 7a3acf0f739..d6303a877fe 100644 --- a/WooCommerce/WooCommerceTests/POS/Models/PointOfSaleAggregateModelTests.swift +++ b/WooCommerce/WooCommerceTests/POS/Models/PointOfSaleAggregateModelTests.swift @@ -15,7 +15,7 @@ struct PointOfSaleAggregateModelTests { let sut = PointOfSaleAggregateModel(itemsController: MockPointOfSaleItemsController(), cardPresentPaymentService: MockCardPresentPaymentService(), orderController: MockPointOfSaleOrderController(), - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) // Then #expect(sut.orderStage == .building) } @@ -26,7 +26,7 @@ struct PointOfSaleAggregateModelTests { let sut = PointOfSaleAggregateModel(itemsController: MockPointOfSaleItemsController(), cardPresentPaymentService: MockCardPresentPaymentService(), orderController: MockPointOfSaleOrderController(), - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) sut.addToCart(makeItem()) await sut.checkOut() try #require(sut.orderStage == .finalizing) @@ -46,7 +46,7 @@ struct PointOfSaleAggregateModelTests { let sut = PointOfSaleAggregateModel(itemsController: MockPointOfSaleItemsController(), cardPresentPaymentService: MockCardPresentPaymentService(), orderController: MockPointOfSaleOrderController(), - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) sut.addToCart(makeItem()) // When @@ -62,7 +62,7 @@ struct PointOfSaleAggregateModelTests { let sut = PointOfSaleAggregateModel(itemsController: MockPointOfSaleItemsController(), cardPresentPaymentService: MockCardPresentPaymentService(), orderController: MockPointOfSaleOrderController(), - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) sut.addToCart(makeItem()) await sut.checkOut() try #require(sut.orderStage == .finalizing) @@ -92,7 +92,7 @@ struct PointOfSaleAggregateModelTests { cardPresentPaymentService: MockCardPresentPaymentService(), orderController: MockPointOfSaleOrderController(), analytics: analytics, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) try #require(sut.cart.isEmpty) let item = makeItem() @@ -110,7 +110,7 @@ struct PointOfSaleAggregateModelTests { cardPresentPaymentService: MockCardPresentPaymentService(), orderController: MockPointOfSaleOrderController(), analytics: analytics, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) let items = [makeItem(), makeItem(), makeItem()] // When @@ -127,7 +127,7 @@ struct PointOfSaleAggregateModelTests { cardPresentPaymentService: MockCardPresentPaymentService(), orderController: MockPointOfSaleOrderController(), analytics: analytics, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) let item = makeItem(name: "Item 1") let anotherItem = makeItem(name: "Item 2") @@ -151,7 +151,7 @@ struct PointOfSaleAggregateModelTests { cardPresentPaymentService: MockCardPresentPaymentService(), orderController: MockPointOfSaleOrderController(), analytics: analytics, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) let item = makeItem(name: "Item 1") let anotherItem = makeItem(name: "Item 2") @@ -166,22 +166,6 @@ struct PointOfSaleAggregateModelTests { #expect(sut.cart.isEmpty) } - @available(iOS 17.0, *) - @Test func removeAllItemsFromCart_when_tapped_then_tracks_event() { - // Given - let sut = PointOfSaleAggregateModel(itemsController: MockPointOfSaleItemsController(), - cardPresentPaymentService: MockCardPresentPaymentService(), - orderController: MockPointOfSaleOrderController(), - analytics: analytics, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) - - //When - sut.removeAllItemsFromCart() - - // Then - #expect(analyticsProvider.receivedEvents.first(where: { $0 == "clear_cart_tapped" }) != nil) - } - @available(iOS 17.0, *) @Test(.disabled( """ @@ -195,7 +179,7 @@ struct PointOfSaleAggregateModelTests { cardPresentPaymentService: MockCardPresentPaymentService(), orderController: MockPointOfSaleOrderController(), analytics: analytics, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) let item = makeItem() // When @@ -223,7 +207,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) sut.addToCart(makeItem()) @@ -242,7 +226,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) sut.addToCart(makeItem()) sut.addToCart(makeItem()) @@ -264,7 +248,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) sut.addToCart(makeItem()) sut.removeAllItemsFromCart() @@ -285,7 +269,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) sut.addToCart(makeItem()) cardPresentPaymentService.connectedReader = .init(name: "Test reader", batteryLevel: 0.7) @@ -306,7 +290,7 @@ struct PointOfSaleAggregateModelTests { let sut = PointOfSaleAggregateModel(itemsController: MockPointOfSaleItemsController(), cardPresentPaymentService: MockCardPresentPaymentService(), orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) // When try await sut.sendReceipt(to: "") @@ -325,7 +309,7 @@ struct PointOfSaleAggregateModelTests { let sut = PointOfSaleAggregateModel(itemsController: MockPointOfSaleItemsController(), cardPresentPaymentService: MockCardPresentPaymentService(), orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) do { // When @@ -352,7 +336,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) // Then #expect(sut.paymentState == .card(.idle)) @@ -366,7 +350,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker(), + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker(), paymentState: .card(.cardPaymentSuccessful)) // When @@ -384,7 +368,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) cardPresentPaymentService.paymentEvent = .show(eventDetails: .paymentSuccess(done: {})) try #require(sut.cardPresentPaymentInlineMessage != nil) @@ -404,7 +388,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker(), + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker(), paymentState: .card(.cardPaymentSuccessful)) // When @@ -422,7 +406,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) cardPresentPaymentService.paymentEvent = .show( eventDetails: .tapSwipeOrInsertCard( @@ -445,7 +429,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) // When await sut.startCashPayment() @@ -463,7 +447,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) // When await sut.startCashPayment() @@ -480,7 +464,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) await sut.startCashPayment() #expect(sut.paymentState == .cash(.collectingCash)) @@ -499,7 +483,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) #expect(sut.orderStage == .building) await sut.checkOut() @@ -528,7 +512,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) // When cardPresentPaymentService.paymentEvent = .show(eventDetails: .paymentSuccess(done: {})) @@ -549,7 +533,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) struct TestError: Error {} // When paymentIntentCreationError event is received @@ -576,7 +560,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) struct TestError: Error {} await sut.checkOut() @@ -606,7 +590,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) cardPresentPaymentService.connectedReader = nil orderController.orderStateToReturn = makeLoadedOrderState(orderTotal: "$1.00", orderTotalDecimal: 1) @@ -635,7 +619,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) cardPresentPaymentService.connectedReader = .init(name: "Test reader", batteryLevel: 0.7) orderController.orderStateToReturn = makeLoadedOrderState(orderTotal: "$0.01", orderTotalDecimal: 0.01) @@ -654,7 +638,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) cardPresentPaymentService.connectedReader = .init(name: "Test reader", batteryLevel: 0.7) orderController.orderStateToReturn = makeLoadedOrderState(orderTotal: "$0.00", orderTotalDecimal: 0.0) @@ -673,7 +657,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) cardPresentPaymentService.connectedReader = CardPresentPaymentCardReader(name: "Test", batteryLevel: 0.5) orderController.orderStateToReturn = makeLoadedOrderState(orderTotal: "$1.00", orderTotalDecimal: 1) @@ -703,7 +687,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) orderController.orderStateToReturn = makeLoadedOrderState(cartTotal: "$1.00") await orderController.syncOrder(for: [], retryHandler: {}) @@ -728,7 +712,7 @@ struct PointOfSaleAggregateModelTests { itemsController: itemsController, cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) let onboardingViewModel = CardPresentPaymentsOnboardingViewModel(fixedState: .pluginNotActivated(plugin: .stripe)) cardPresentPaymentService.paymentEvent = .idle try #require(sut.cardPresentPaymentOnboardingViewModel == nil) @@ -761,7 +745,7 @@ struct PointOfSaleAggregateModelTests { cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, analytics: analytics, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) sut.addToCart(makeItem()) @@ -787,7 +771,7 @@ struct PointOfSaleAggregateModelTests { cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, analytics: analytics, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) sut.addToCart(makeItem()) @@ -807,7 +791,7 @@ struct PointOfSaleAggregateModelTests { cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, analytics: analytics, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) //When sut.connectCardReader() @@ -825,7 +809,7 @@ struct PointOfSaleAggregateModelTests { cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, analytics: analytics, - collectOrderPaymentAnalyticsTracker: MockCollectOrderPaymentAnalyticsTracker()) + collectOrderPaymentAnalyticsTracker: MockPOSCollectOrderPaymentAnalyticsTracker()) //When sut.disconnectCardReader() @@ -837,7 +821,7 @@ struct PointOfSaleAggregateModelTests { @available(iOS 17.0, *) @Test func checkout_when_invoked_then_tracks_trackCheckoutTapped() async throws { // Given - let analyticsTracker = MockCollectOrderPaymentAnalyticsTracker() + let analyticsTracker = MockPOSCollectOrderPaymentAnalyticsTracker() let sut = PointOfSaleAggregateModel(itemsController: MockPointOfSaleItemsController(), cardPresentPaymentService: cardPresentPaymentService, orderController: orderController, @@ -853,10 +837,11 @@ struct PointOfSaleAggregateModelTests { @available(iOS 17.0, *) @Test func cancelCashPayment_when_invoked_then_tracks_expected_event() async throws { // Given - let analyticsTracker = MockCollectOrderPaymentAnalyticsTracker() + let analyticsTracker = MockPOSCollectOrderPaymentAnalyticsTracker() let sut = PointOfSaleAggregateModel(itemsController: MockPointOfSaleItemsController(), cardPresentPaymentService: MockCardPresentPaymentService(), orderController: MockPointOfSaleOrderController(), + analytics: analytics, collectOrderPaymentAnalyticsTracker: analyticsTracker) // When await sut.cancelCashPayment()