43 lines
1.5 KiB
TypeScript
43 lines
1.5 KiB
TypeScript
import { beforeEach, describe, expect, it } from 'vitest';
|
|
import {
|
|
CHECKOUT_STORAGE_KEY,
|
|
PENDING_CHECKOUT_TTL_MS,
|
|
isCheckoutExpired,
|
|
loadPendingCheckout,
|
|
shouldClearPendingCheckout,
|
|
storePendingCheckout,
|
|
} from '../lib/billingCheckout';
|
|
|
|
describe('billingCheckout helpers', () => {
|
|
beforeEach(() => {
|
|
sessionStorage.clear();
|
|
});
|
|
it('detects expired pending checkout', () => {
|
|
const pending = { packageId: 12, startedAt: 0 };
|
|
expect(isCheckoutExpired(pending, PENDING_CHECKOUT_TTL_MS + 1)).toBe(true);
|
|
});
|
|
|
|
it('keeps pending checkout when active package differs', () => {
|
|
const pending = { packageId: 12, startedAt: Date.now() };
|
|
expect(shouldClearPendingCheckout(pending, 18, pending.startedAt)).toBe(false);
|
|
});
|
|
|
|
it('clears pending checkout when active package matches', () => {
|
|
const now = Date.now();
|
|
const pending = { packageId: 12, startedAt: now };
|
|
expect(shouldClearPendingCheckout(pending, 12, now)).toBe(true);
|
|
});
|
|
|
|
it('stores and loads pending checkout from session storage', () => {
|
|
const pending = { packageId: 7, checkoutSessionId: 'sess_123', startedAt: Date.now() };
|
|
storePendingCheckout(pending);
|
|
expect(loadPendingCheckout(pending.startedAt)).toEqual(pending);
|
|
});
|
|
|
|
it('clears pending checkout storage', () => {
|
|
storePendingCheckout({ packageId: 7, checkoutSessionId: 'sess_123', startedAt: Date.now() });
|
|
storePendingCheckout(null);
|
|
expect(sessionStorage.getItem(CHECKOUT_STORAGE_KEY)).toBeNull();
|
|
});
|
|
});
|