import * as Deposit from './Deposit.js' describe('generateId', () => { test('embeds the timestamp so lexical order is chronological', () => { const earlier = Deposit.generateId(new Date('2026-01-01T00:00:00.000Z')) const later = Deposit.generateId(new Date('2026-01-01T00:00:01.000Z')) expect(earlier).toMatch(/^fdp_\d{15}_[0-9A-Za-z]{24}$/) expect(earlier < later).toBe(true) }) }) describe('isTerminal', () => { test('recognizes only completed and refunded deposits', () => { expect(Deposit.statuses.filter(Deposit.isTerminal)).toEqual(['completed', 'refunded']) }) }) describe('canTransition', () => { test('allows evidence-driven progress and prevents terminal exits', () => { expect(Deposit.canTransition('detected', 'bridging')).toBe(true) expect(Deposit.canTransition('bridging', 'settling')).toBe(true) expect(Deposit.canTransition('settling', 'completed')).toBe(true) expect(Deposit.canTransition('completed', 'refunding')).toBe(false) expect(Deposit.canTransition('refunded', 'bridging')).toBe(false) }) })