Files
Investidor-V2/tests/frontend/native-pdf-scope.test.mjs
T

82 lines
2.8 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
import {
createProjectDossierReport,
createProjectDossierPrintHtml,
} from '../../resources/js/lib/project-dossier-report.ts';
void test('native print source includes only selected applicable requirements and human stage states', async () => {
const context = {
version: 1,
consumer_opportunity: 'opportunity:309',
context_revision: 1,
opportunity_choices: [
{
opportunity: {
key: 'opportunity:309',
title: 'Segunda oportunidade Manica',
},
},
],
path: {
steps: [
{
code: 'S10',
title: 'Terra',
state: 'not_started',
applicability: 'applicable',
},
{
code: 'S13',
title: 'Financiamento',
applicability: 'not_needed_for_preparation',
reason: 'Sem financiamento externo',
},
],
},
requirements_assessment: {
requirements: [
{
opportunity_key: 'opportunity:309',
opportunity_title: 'Segunda oportunidade Manica',
step: 'S10',
title: 'Acesso à terra e DUAT',
state: 'conditional',
documents: ['Planta do local'],
basis: 'Fonte documentada',
source_url: '/documentos/fonte',
},
{
opportunity_key: 'opportunity:286',
step: 'S10',
title: 'Requisito da primeira Sofala',
documents: [],
},
{
opportunity_key: 'opportunity:309',
step: 'S13',
title: 'Documento de financiamento dispensado',
documents: [],
},
],
},
};
const report = createProjectDossierReport(
{
project_title: 'QA PDF Manica',
context_applicability_snapshot: JSON.stringify(context),
},
{ selectedSections: new Set(['sources']) },
);
const html = await createProjectDossierPrintHtml(report, [], false);
assert.match(html, /Por iniciar/);
assert.doesNotMatch(html, /not_started/);
assert.match(html, /Acesso à terra e DUAT/);
assert.match(html, /Planta do local/);
assert.match(html, /Fonte documentada/);
assert.doesNotMatch(
html,
/Requisito da primeira Sofala|Documento de financiamento dispensado/,
);
});