Files
omnex/web/src/pages/RequestDemo.test.tsx
T
Nuxgrid 07db8a2ae2
ci-web / test (push) Failing after 26m34s
feat: add web
2026-07-27 19:13:56 +02:00

52 lines
1.6 KiB
TypeScript

import { describe, expect, it, vi, beforeEach, afterEach } from 'vitest'
import { render, screen, waitFor } from '@testing-library/react'
import userEvent from '@testing-library/user-event'
import { SaasProvider } from '@saas-ui/react'
import { MemoryRouter } from 'react-router-dom'
import { RequestDemo } from './RequestDemo'
function renderPage() {
return render(
<SaasProvider>
<MemoryRouter>
<RequestDemo />
</MemoryRouter>
</SaasProvider>,
)
}
describe('RequestDemo', () => {
beforeEach(() => {
vi.restoreAllMocks()
})
afterEach(() => {
vi.unstubAllGlobals()
})
it('affiche le formulaire de demande de démo', () => {
renderPage()
expect(screen.getByRole('heading', { name: /demander une démo/i })).toBeInTheDocument()
expect(screen.getByLabelText(/entreprise/i)).toBeInTheDocument()
})
it('envoie le lead et affiche la confirmation', async () => {
const fetchMock = vi.fn().mockResolvedValue({
ok: true,
status: 201,
json: async () => ({ id: '1', company: 'ACME', email: 'a@acme.io', status: 'new' }),
})
vi.stubGlobal('fetch', fetchMock)
renderPage()
const user = userEvent.setup()
await user.type(screen.getByLabelText(/entreprise/i), 'ACME')
await user.type(screen.getByLabelText(/email professionnel/i), 'a@acme.io')
await user.click(screen.getByRole('button', { name: /envoyer ma demande/i }))
await waitFor(() =>
expect(screen.getByRole('heading', { name: /merci/i })).toBeInTheDocument(),
)
expect(fetchMock).toHaveBeenCalledOnce()
})
})