import test from 'node:test'; import assert from 'node:assert/strict'; import fs from 'node:fs'; import {createRequire} from 'node:module'; import React from 'react'; import {renderToStaticMarkup} from 'react-dom/server'; import ts from 'typescript'; import * as forms from '../../resources/js/lib/fiscal-form-preparation.ts'; const require=createRequire(import.meta.url); const source=fs.readFileSync(new URL('../../resources/js/pages/portal/fiscal-forms.tsx',import.meta.url),'utf8'); const compiled=ts.transpileModule(source,{compilerOptions:{module:ts.ModuleKind.CommonJS,target:ts.ScriptTarget.ES2022,jsx:ts.JsxEmit.ReactJSX}}).outputText; const module={exports:{}}; new Function('require','module','exports',compiled)(name=>name==='@inertiajs/react'?{Head:()=>null,Link:({href,children,...props})=>React.createElement('a',{href,...props},children),router:{on:()=>()=>{}}}:name==='@/layouts/portal-navigation'?{PortalMenu:()=>null}:name==='@/lib/fiscal-form-preparation'?forms:require(name),module,module.exports); test('fiscal entry renders labelled editable fields and a guided preparation rather than legislation',()=>{ const html=renderToStaticMarkup(React.createElement(module.exports.default)); for(const label of ['Identificação e período','Nome ou designação social','NUIT','Período — ano e mês','Conferir e guardar','Guardar ficheiro para continuar','Recuperar ficheiro guardado','Confirmar recuperação']) { // Confirmation appears only after a compatible file is selected. if(label !== 'Confirmar recuperação') assert.ok(html.includes(label),label); } assert.equal((html.match(/inputMode="decimal"/g)??[]).length,27); assert.match(html,/sem submissão à Autoridade Tributária/); assert.match(html,/Não há gravação automática/); assert.doesNotMatch(html,/value="0"/); }); test('IRPC entry opens the requested form directly and keeps its partial coverage explicit',()=>{ const html=renderToStaticMarkup(React.createElement(module.exports.default,{initialTax:'irpc'})); assert.match(html,/IRPC — Modelo 22/); assert.match(html,/L8 permanece parcial/); assert.match(html,/303 — Dupla tributação económica/); assert.match(html,/304 — Dupla tributação internacional/); assert.match(html,/Não utilize a mesma parcela/); assert.equal((html.match(/inputMode="decimal"/g)??[]).length,24); assert.doesNotMatch(html,/01 — Base das operações/); });