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(); }); });