import { App } from '@inertiajs/react'; import type { Page } from '@inertiajs/core'; import { renderToString } from 'react-dom/server'; import { expect, test } from 'vitest'; import Entry from '@/pages/candidate/entry'; import Profile from '@/pages/candidate/profile'; const page = { component: 'candidate/entry', url: '/candidaturas/1', version: 'candidate', props: { errors: {} }, clearHistory: false, encryptHistory: true, } satisfies Page; test.each([true, false])( 'registration availability (%s) preserves existing login and does not promise submission', (registration_open) => { const initialPage = { ...page, props: { ...page.props, company: { id: 1, name: 'Empresa fictícia' }, portal: { version: 2, registration_open, notice: 'Aviso fictício da empresa.', }, }, }; const html = renderToString( , ); expect(html).toContain('Entrar na minha área'); expect(html.includes('Criar a minha conta')).toBe(registration_open); expect(html).toContain('Criar um perfil não constitui candidatura'); expect(html).not.toContain('/dashboard'); }, ); test('candidate profile renders geography and retained version without internal evaluation controls', () => { const initialPage = { ...page, component: 'candidate/profile', props: { ...page.props, companyId: 1, email: 'test@example.invalid', profile: { version: 3, data: { name: 'Pessoa fictícia', phone: '', summary: 'Perfil fictício.', availability: { province: 'Província fictícia', district: 'Distrito fictício', locality: 'Localidade fictícia', }, }, }, }, }; const html = renderToString( , ); expect(html).toContain('value="Província fictícia"'); expect(html).toContain('value="Distrito fictício"'); expect(html).toContain('value="Localidade fictícia"'); expect(html).toContain('Guardar nova versão do perfil'); expect(html).not.toContain('Aprovar'); expect(html).not.toContain('/pessoas'); });