init
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
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');
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user