Files
Investidor-V2/tests/frontend/investment-complements.test.mjs
T

38 lines
2.7 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
import { investmentPreparationHref, complementPreparationHref } from '../../resources/js/lib/search-territory.ts';
import { buildProjectDossierRows } from '../../resources/js/lib/project-dossier.ts';
test('consulting a complementary opportunity preserves the origin selection and the chosen dossier', () => {
const dossier='11111111-1111-4111-8111-111111111111';
const query = new URLSearchParams({complement_origin:'opportunity:10',complement_code:'cold',complement_target:'opportunity:20',investment_dossier:dossier,complement_territory:dossier});
const href=investmentPreparationHref(20,'/oportunidades/frio?'+query);
assert.ok(href.startsWith(`/investimentos/${dossier}/contexto/editar?`));
const params=new URL(href,'https://local.invalid').searchParams;
assert.equal(params.get('complement_origin'),'opportunity:10');
assert.equal(params.get('complement_target'),'opportunity:20');
assert.equal(params.get('complement_territory'),dossier);
assert.equal(complementPreparationHref('/parcerias/7?complement_origin=portfolio:a&complement_code=finance&complement_target=partnership:7','partnership:7'),'/investimentos/iniciar?complement_origin=portfolio%3Aa&complement_code=finance&complement_target=partnership%3A7');
assert.equal(complementPreparationHref('/oportunidades/frio?'+query,'opportunity:21'),null);
query.set('investment_dossier','https://external.invalid');
assert.ok(investmentPreparationHref(20,'/oportunidades/frio?'+query).startsWith('/investimentos/iniciar?'));
});
test('complement report rows retain principal, concrete target and the distinction from a need', () => {
const complements=[
{title:'Silos',kind:'opportunity',origin:{title:'Cereais'},target:{title:'Armazenagem existente',href:'/oportunidades/silos'}},
{title:'Fiação',kind:'need',origin:{title:'Corredor de origem'},target:null},
{title:'Formação',kind:'service',origin:{title:'Cereais'},target:{title:'Serviço existente',href:'/parcerias/7'}},
];
const draft={project_title:'Título deliberado',context_applicability_snapshot:JSON.stringify({version:1,complements})};
const before=JSON.stringify(draft);
const rows=buildProjectDossierRows(draft);
const chosen=rows.filter(row=>row[1]==='Complemento escolhido');
assert.equal(chosen.length,3);
assert.ok(chosen[0][3].includes('Cereais'));
assert.ok(chosen[1][3].includes('necessidade complementar em preparação'));
assert.ok(chosen[2][3].includes('serviço/instrumento'));
assert.ok(rows.some(row=>row[1]==='Ficha complementar'&&row[3]==='/oportunidades/silos'));
assert.equal(JSON.stringify(draft),before);
});