Files
nullcart/backend/src/utils/invoice/formatInvoicePaymentConfirmationStatus.spec.ts
T
2026-08-28 17:31:02 +02:00

89 lines
3.0 KiB
TypeScript

import * as formatRelativeTimeAgoModule from '../formatRelativeTimeAgo';
import { formatInvoicePaymentConfirmationStatus } from './formatInvoicePaymentConfirmationStatus';
describe('formatInvoicePaymentConfirmationStatus', () => {
let formatRelativeTimeAgoSpy: jest.SpiedFunction<typeof formatRelativeTimeAgoModule.formatRelativeTimeAgo>;
beforeEach(() => {
formatRelativeTimeAgoSpy = jest
.spyOn(formatRelativeTimeAgoModule, 'formatRelativeTimeAgo')
.mockReturnValue('2 hours ago');
});
afterEach(() => {
formatRelativeTimeAgoSpy.mockRestore();
});
describe('compact', () => {
it('returns Confirmed when confirmations meet the requirement', () => {
expect(
formatInvoicePaymentConfirmationStatus({
confirmations: 3,
requiredConfirmations: 3,
format: 'compact'
})
).toBe('Confirmed');
});
it('returns compact progress with a slash separator', () => {
expect(
formatInvoicePaymentConfirmationStatus({
confirmations: 2,
requiredConfirmations: 10,
format: 'compact'
})
).toBe('2/10');
});
it('treats zero-confirmation tiers as confirmed', () => {
expect(
formatInvoicePaymentConfirmationStatus({
confirmations: 0,
requiredConfirmations: 0,
format: 'compact'
})
).toBe('Confirmed');
});
});
describe('extended', () => {
const createdAt = new Date('2026-01-01T12:00:00.000Z');
it('returns Confirmed when confirmations meet the requirement', () => {
expect(
formatInvoicePaymentConfirmationStatus({
confirmations: 1,
requiredConfirmations: 1,
createdAt,
format: 'extended'
})
).toBe('Confirmed');
expect(formatRelativeTimeAgoSpy).not.toHaveBeenCalled();
});
it('returns extended progress with relative detection time', () => {
expect(
formatInvoicePaymentConfirmationStatus({
confirmations: 2,
requiredConfirmations: 10,
createdAt,
format: 'extended'
})
).toBe('2 / 10 confirmations · detected 2 hours ago');
expect(formatRelativeTimeAgoSpy).toHaveBeenCalledWith(createdAt);
});
it('requires createdAt for extended format', () => {
expect(() =>
formatInvoicePaymentConfirmationStatus({
confirmations: 1,
requiredConfirmations: 3,
format: 'extended'
})
).toThrow('createdAt is required for extended confirmation status format');
});
});
});