diff --git a/app/src/test/java/to/bitkit/repositories/PaykitPaymentRequestRepoTest.kt b/app/src/test/java/to/bitkit/repositories/PaykitPaymentRequestRepoTest.kt index 88efc8b136..ae6c13ccd4 100644 --- a/app/src/test/java/to/bitkit/repositories/PaykitPaymentRequestRepoTest.kt +++ b/app/src/test/java/to/bitkit/repositories/PaykitPaymentRequestRepoTest.kt @@ -1326,7 +1326,7 @@ class PaykitPaymentRequestRepoTest : BaseUnitTest(StandardTestDispatcher()) { backgroundScope.launch { sut.expiredProposals.collect { reported += it } } runCurrent() - // The clock passes expiry after the snapshot is parsed and before the pending list is replaced. + // The clock passes expiry after the refresh reads its time and before the pending list is replaced. // Mockito answers with Result's unboxed value, as the compiled suspend call expects. whenever(usdtPayments.verifiedReceipts(any())).thenAnswer { clockJumpMillis = 10_000 diff --git a/app/src/test/java/to/bitkit/viewmodels/AppViewModelSendFlowTest.kt b/app/src/test/java/to/bitkit/viewmodels/AppViewModelSendFlowTest.kt index a8b53aab7a..ec4a6b75b6 100644 --- a/app/src/test/java/to/bitkit/viewmodels/AppViewModelSendFlowTest.kt +++ b/app/src/test/java/to/bitkit/viewmodels/AppViewModelSendFlowTest.kt @@ -1864,6 +1864,31 @@ class AppViewModelSendFlowTest : BaseUnitTest() { verify(paykitPaymentProofRepo, never()).prepare(any(), any(), any(), any(), anyOrNull()) } + @Test + fun `request being paid gets no expired toast when it expires`() = test { + val (request, _) = reopenRetainedHardwareRequest(balanceSats = 1_000_000uL, amountSats = 30_000uL) + val sheet = sut.currentSheet.value + sut.onSheetVisible(sheet) + sut.sendEffect.test { + sut.setSendEvent(SendEvent.SwipeToPay) + advanceUntilIdle() + sut.setSendEvent(SendEvent.PayConfirmed) + advanceUntilIdle() + assertEquals(SendEffect.NavigateToHardwareSign, awaitItem()) + cancelAndIgnoreRemainingEvents() + } + clearInvocations(toastManager) + + whenever(paykitPaymentRequestRepo.isExpired(request)).thenReturn(true) + pendingPaykitPaymentRequests.value = emptyList() + expiredPaykitProposals.emit(listOf(request)) + runCurrent() + + val toasts = argumentCaptor() + verify(toastManager, atLeast(0)).enqueue(toasts.capture()) + assertTrue(toasts.allValues.none { it.testTag == "PaymentRequestExpiredToast" }) + } + @Test fun `reopened refused hardware request locks terms and reaches hardware sign on swipe`() = test { reopenRetainedHardwareRequest(balanceSats = 1_000_000uL, amountSats = 30_000uL)