Files
Investidor-V2/tools/irpc-international-recovered-qa.mjs
T
2026-10-27 14:57:18 +02:00

27 lines
2.3 KiB
JavaScript

import fs from 'node:fs';
import path from 'node:path';
import assert from 'node:assert/strict';
import {fileURLToPath} from 'node:url';
import {annualBook,annualCurrent,calculateAnnual,annualHtml,annualReportRows} from '../resources/js/lib/irpc-annual-settlement.ts';
import {createProjectDossierReport} from '../resources/js/lib/project-dossier-report.ts';
const root=path.dirname(path.dirname(fileURLToPath(import.meta.url)));
assert.equal(path.basename(root),'portal-investidor-irpc-international-qa-20261027');
const output=path.join(root,'outputs/irpc-l8-international-20261027');
const results=[];
for(const name of ['payable','treaty','missing','limited-collecta','duplicate','absent','prior-use']){
const d=JSON.parse(fs.readFileSync(path.join(output,'recovered-'+name+'.json'),'utf8'));
const book=annualBook(d),m=book.result.model;
assert.equal(annualCurrent(d,book),true);
const fresh=calculateAnnual(d,book);assert.equal(fresh.status,m.status);assert.deepEqual(fresh.arithmeticBalance,m.arithmeticBalance);assert.deepEqual(fresh.internationalCredit,m.internationalCredit);
const html=annualHtml(d),rows=annualReportRows(d);
const dossier=createProjectDossierReport(d,{selectedSections:new Set(['finance']),generatedAt:'2026-10-27T17:00:00+02:00'});
assert.match(html,/Crédito internacional — antes do PEC/);assert.match(JSON.stringify(dossier),/Crédito internacional — antes do PEC/);
if(['missing','duplicate'].includes(name)){assert.match(html,/Indeterminado/);assert.equal(m.arithmeticBalance,null);}
if(name==='payable'){assert.match(html,/700.00/);assert.match(html,/1400.00/);assert.match(html,/1200.00/);}
fs.writeFileSync(path.join(output,'report-'+name+'.html'),html);
fs.writeFileSync(path.join(output,'dossier-'+name+'.json'),JSON.stringify(dossier));
results.push({case:name,status:m.status,balance:m.arithmeticBalance,international:m.internationalCredit,pec:m.pecDeduction,reportRows:rows.length,history:book.history.length,apiRoundTrip:true,current:true,dossier:true});
}
fs.writeFileSync(path.join(output,'recovered-report-receipt.json'),JSON.stringify({synthetic:true,activeChanged:false,results},null,2));
console.log(JSON.stringify(results.map(({case:name,status,balance,history})=>({case:name,status,balance,history})),null,2));