refactor: update payment validation logic to handle transfer statuses more effectively

This commit is contained in:
2026-07-29 09:36:22 -03:00
parent 9bb3374ba0
commit 109a1cab5a
2 changed files with 16 additions and 10 deletions

View File

@@ -191,24 +191,30 @@ describe('CheckoutPageComponent payment validation', () => {
expect(checkoutServiceStub.getPurchase).not.toHaveBeenCalled();
});
it('submits a transfer for review and navigates to its status page', async () => {
it.each(['created', 'pending_payment', 'in_review'])(
'shows the payment error when a transfer remains %s',
async (status) => {
checkoutServiceStub.submitPurchaseForReview.mockResolvedValue({ status });
const { component } = createComponent();
component.selectedPaymentMethod.set('transfer');
await component.onComplete();
expect(checkoutServiceStub.submitPurchaseForReview).toHaveBeenCalledWith('tenant-test', 25);
expect(component.transferValidationStatus()).toBe('error');
expect(cartServiceStub.clearCart).not.toHaveBeenCalled();
expect(routerStub.navigate).toHaveBeenCalledWith(['/checkout/status', 25]);
});
expect(routerStub.navigate).not.toHaveBeenCalled();
},
);
it('navigates after a transfer is confirmed as paid', async () => {
it('submits a paid transfer and navigates to its confirmation page', async () => {
checkoutServiceStub.submitPurchaseForReview.mockResolvedValue({ status: 'paid' });
const { component } = createComponent();
component.selectedPaymentMethod.set('transfer');
await component.onComplete();
expect(checkoutServiceStub.submitPurchaseForReview).toHaveBeenCalledWith('tenant-test', 25);
expect(cartServiceStub.clearCart).not.toHaveBeenCalled();
expect(routerStub.navigate).toHaveBeenCalledWith(['/checkout/status', 25]);
});

View File

@@ -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;
}