Skip to content

Commit 5a67385

Browse files
Copilotstaskus
andcommitted
Add tests for currency mismatch banner
- Test banner dismissal persistence - Test banner not showing when previously dismissed - Tests verify UserDefaults storage and analytics tracking Co-authored-by: staskus <[email protected]>
1 parent 2172859 commit 5a67385

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

WooCommerce/WooCommerceTests/ViewRelated/Dashboard/DashboardViewModelTests.swift

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -837,4 +837,47 @@ private extension DashboardViewModelTests {
837837
newOrder.update(with: readOnlyOrder)
838838
storage.saveIfNeeded()
839839
}
840+
841+
// MARK: - Currency Mismatch Tests
842+
843+
@MainActor
844+
func test_dismissing_currency_mismatch_banner_persists_dismissal() {
845+
// Given
846+
let viewModel = DashboardViewModel(siteID: sampleSiteID,
847+
stores: stores,
848+
storageManager: storageManager,
849+
userDefaults: userDefaults,
850+
analytics: analytics)
851+
852+
// When
853+
viewModel.dismissCurrencyMismatchBanner()
854+
855+
// Then
856+
XCTAssertFalse(viewModel.showCurrencyMismatchBanner)
857+
XCTAssertTrue(userDefaults.bool(forKey: UserDefaults.Key.currencyMismatchBannerDismissed.rawValue))
858+
XCTAssertEqual(analyticsProvider.receivedEvents.first, "dashboard_currency_mismatch_banner_dismissed")
859+
}
860+
861+
@MainActor
862+
func test_currency_mismatch_banner_does_not_show_when_previously_dismissed() async {
863+
// Given
864+
userDefaults.set(true, forKey: .currencyMismatchBannerDismissed)
865+
866+
let viewModel = DashboardViewModel(siteID: sampleSiteID,
867+
stores: stores,
868+
storageManager: storageManager,
869+
userDefaults: userDefaults)
870+
871+
// When
872+
await viewModel.checkCurrencyMismatch()
873+
874+
// Then
875+
XCTAssertFalse(viewModel.showCurrencyMismatchBanner)
876+
}
877+
878+
func insertPaymentGatewayAccount(_ account: PaymentGatewayAccount) {
879+
let newAccount = storage.insertNewObject(ofType: StoragePaymentGatewayAccount.self)
880+
newAccount.update(with: account)
881+
storage.saveIfNeeded()
882+
}
840883
}

0 commit comments

Comments
 (0)