import { DemoDialogHost } from '@/components/integrations/DemoDialogHost'; import { demoOpenEventName } from '@/components/integrations/DemoTrigger'; import enHomepage from '@/content/locales/en/homepage.json'; import { act, render, screen } from '@testing-library/react'; import { beforeAll, describe, expect, it } from 'vitest'; function openDemoForm(source: 'hero' | 'pricing') { const trigger = document.createElement('button'); document.body.appendChild(trigger); act(() => { window.dispatchEvent( new CustomEvent(demoOpenEventName, { detail: { source, trigger }, }), ); }); } describe('DemoDialogHost', () => { beforeAll(() => { HTMLDialogElement.prototype.showModal ??= function showModal() { this.setAttribute('open', ''); }; HTMLDialogElement.prototype.close ??= function close() { this.removeAttribute('open'); }; }); it('keeps the full fleet selector for regular demo requests', () => { render(); openDemoForm('hero'); const fleet = screen.getByLabelText(/Approximate fleet size/) as HTMLSelectElement; expect(Array.from(fleet.options).map((option) => option.textContent)).toEqual([ 'Select an option', '1–25 vehicles', '26–75 vehicles', '76–150 vehicles', '150 or more vehicles', ]); }); it('limits the pricing request fleet selector to 150 or more vehicles', () => { render(); openDemoForm('pricing'); const fleet = screen.getByLabelText(/Approximate fleet size/) as HTMLSelectElement; expect(Array.from(fleet.options).map((option) => option.textContent)).toEqual([ '150 or more vehicles', ]); expect(fleet.value).toBe('250+'); expect(screen.getByRole('button', { name: 'Request quote' })).toBeInTheDocument(); expect(screen.queryByRole('button', { name: 'Create my account' })).not.toBeInTheDocument(); expect(screen.getByRole('dialog', { name: 'Request Enterprise quote' })).toBeVisible(); expect(screen.getByText('Enterprise quote')).toBeInTheDocument(); expect(screen.getByText(/Share company information only/)).toBeInTheDocument(); expect(screen.queryByText('Safe local adapter')).not.toBeInTheDocument(); expect(screen.queryByText(/Non-production mode validates/)).not.toBeInTheDocument(); }); });