import { demoLeadSchema, demoSubmissionEnvelopeSchema, fleetSizeValues } from '@/lib/demo/schema'; import { describe, expect, it } from 'vitest'; const validLead = { fullName: ' Ada Example ', workEmail: ' ADA@EXAMPLE.TEST ', company: ' Rental Test Labs ', fleetSize: '25-49', market: '', preferredLanguage: 'en', message: ' Reservation workflow ', idempotencyKey: '154249a8-0c3c-4ad8-bda6-91b1ffb361a8', source: 'hero', } as const; describe('demo lead schema', () => { it('normalizes approved fields without adding sales-enrichment data', () => { const result = demoLeadSchema.parse(validLead); expect(result).toEqual({ ...validLead, fullName: 'Ada Example', workEmail: 'ada@example.test', company: 'Rental Test Labs', market: undefined, message: 'Reservation workflow', }); }); it('rejects unknown fields and unsupported fleet sizes', () => { expect(() => demoLeadSchema.parse({ ...validLead, phone: '+1 555 0100' })).toThrow(); expect(() => demoLeadSchema.parse({ ...validLead, fleetSize: '5000+' })).toThrow(); }); it('keeps the Phase 9 fleet ranges stable', () => { expect(fleetSizeValues).toEqual(['1-9', '10-24', '25-49', '50-99', '100-249', '250+']); }); it('rejects transport fields outside the approved envelope', () => { expect(() => demoSubmissionEnvelopeSchema.parse({ lead: validLead, guard: { honeypot: '', startedAtMs: 1, fingerprint: 'nope' }, }), ).toThrow(); }); });