diff --git a/src/app/features/store/pages/checkout-page/checkout-page.component.spec.ts b/src/app/features/store/pages/checkout-page/checkout-page.component.spec.ts index b9f4845..563071d 100644 --- a/src/app/features/store/pages/checkout-page/checkout-page.component.spec.ts +++ b/src/app/features/store/pages/checkout-page/checkout-page.component.spec.ts @@ -191,7 +191,25 @@ describe('CheckoutPageComponent payment validation', () => { expect(checkoutServiceStub.getPurchase).not.toHaveBeenCalled(); }); - it('submits a transfer for review and navigates to its status page', async () => { + it('checks a transfer once and redirects to purchase status while pending', async () => { + const { component } = createComponent(); + component.selectedPaymentMethod.set('transfer'); + + await component.onComplete(); + expect(checkoutServiceStub.getPurchase).toHaveBeenCalledTimes(1); + expect(component.transferValidationStatus()).toBe('pending'); + expect(cartServiceStub.clearCart).not.toHaveBeenCalled(); + expect(routerStub.navigate).toHaveBeenCalledWith(['/checkout/status', 25]); + + await vi.advanceTimersByTimeAsync(30_000); + expect(checkoutServiceStub.getPurchase).toHaveBeenCalledTimes(1); + + await component.onComplete(); + expect(checkoutServiceStub.getPurchase).toHaveBeenCalledTimes(1); + }); + + it('navigates after a transfer is confirmed as paid', async () => { + checkoutServiceStub.getPurchase.mockResolvedValue({ status: 'paid' }); const { component } = createComponent(); component.selectedPaymentMethod.set('transfer'); @@ -202,17 +220,6 @@ describe('CheckoutPageComponent payment validation', () => { expect(routerStub.navigate).toHaveBeenCalledWith(['/checkout/status', 25]); }); - it('navigates after a transfer is confirmed as paid', async () => { - checkoutServiceStub.submitPurchaseForReview.mockResolvedValue({ status: 'paid' }); - const { component } = createComponent(); - component.selectedPaymentMethod.set('transfer'); - - await component.onComplete(); - - expect(cartServiceStub.clearCart).not.toHaveBeenCalled(); - expect(routerStub.navigate).toHaveBeenCalledWith(['/checkout/status', 25]); - }); - it('shows a retryable state when transfer validation fails', async () => { vi.spyOn(console, 'error').mockImplementation(() => undefined); checkoutServiceStub.submitPurchaseForReview.mockRejectedValue(new Error('network error')); diff --git a/src/app/features/store/pages/checkout-page/checkout-page.component.ts b/src/app/features/store/pages/checkout-page/checkout-page.component.ts index d802a94..21db68e 100644 --- a/src/app/features/store/pages/checkout-page/checkout-page.component.ts +++ b/src/app/features/store/pages/checkout-page/checkout-page.component.ts @@ -443,7 +443,7 @@ export class CheckoutPageComponent implements OnInit, OnDestroy { purchaseId, ); - if (purchase.status === 'in_review' || purchase.status === 'paid') { + if (purchase.status === 'paid') { this.navigateToPurchaseStatus(purchaseId); return; }