Files
compras/tests/frontend/candidate-triage.test.tsx
nala c6373365bf
tests / ci (push) Canceled after 0s
commit9
2026-10-30 20:02:30 +02:00

97 lines
3.2 KiB
TypeScript

import { App } from '@inertiajs/react';
import type { Page } from '@inertiajs/core';
import { renderToString } from 'react-dom/server';
import { expect, test } from 'vitest';
import Submissions from '@/pages/people/submissions';
import Receipt from '@/pages/candidate/receipt';
const page = {
component: 'people/submissions',
url: '/pessoas/1/recebidas',
version: 'triage',
props: { errors: {} },
clearHistory: false,
encryptHistory: true,
} satisfies Page;
const row = {
id: 7,
reference: 'CAND-TEST',
received_at: '2026-10-30',
decision: null,
snapshot: {
opportunity: {
form: {
definition: {
fields: [{ key: 'full_name', label: 'Nome completo' }],
},
},
},
profile: {
data: { name: 'Pessoa fictícia', summary: 'Perfil fictício.' },
},
answers: { full_name: 'Pessoa fictícia' },
},
};
test.each([true, false])(
'internal triage editing follows assignment (%s) and keeps private and public messages separate',
(canTriage) => {
const initialPage = {
...page,
props: {
...page.props,
process: { id: 1, title: 'Processo fictício', version: 2 },
publication: null,
publicUrl: '/candidaturas/1/oportunidades/1',
canPrepare: canTriage,
canTriage,
submissions: {
data: [row],
prev_page_url: null,
next_page_url: null,
},
},
};
const html = renderToString(
<App initialPage={initialPage} initialComponent={Submissions} />,
);
expect(html).toContain('Pessoa fictícia');
expect(html.includes('Registar decisão de triagem')).toBe(canTriage);
expect(html.includes('Motivo interno (reservado)')).toBe(canTriage);
expect(html.includes('Comunicação destinada ao candidato')).toBe(
canTriage,
);
expect(html.includes('Guardar publicação')).toBe(canTriage);
},
);
test('candidate receives a triage status that does not claim hiring or inclusion in a database', () => {
const initialPage = {
...page,
component: 'candidate/receipt',
props: {
...page.props,
companyId: 1,
receipt: {
reference: 'CAND-TEST',
received_at: '2026-10-30',
snapshot: {
opportunity: { title: 'Processo' },
profile: { version: 1 },
answers: {},
},
},
decision: {
outcome: 'accepted_for_analysis',
message: 'Comunicação aprovada para o titular.',
decided_at: '2026-10-30',
},
},
};
const html = renderToString(
<App initialPage={initialPage} initialComponent={Receipt} />,
);
expect(html).toContain('Aceite para análise');
expect(html).toContain('Comunicação aprovada para o titular.');
expect(html).not.toContain('Motivo interno');
expect(html).toContain('não significa aceitação');
});