pesquisa avancada no portal
This commit is contained in:
@@ -10,7 +10,7 @@ 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);
|
||||
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==='@/components/portal-menu'?{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']) {
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
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';
|
||||
|
||||
const require = createRequire(import.meta.url);
|
||||
const source = fs.readFileSync(new URL('../../resources/js/pages/portal/search.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),
|
||||
} : name === 'lucide-react' ? { Search: () => null } : require(name), module, module.exports);
|
||||
const Search = module.exports.default;
|
||||
|
||||
test('shows five results in one sequence with numbered pagination and the query preserved', () => {
|
||||
const results = { data: [{ title: 'Energia em Nampula', description: 'Projecto público', url: '/oportunidades/energia', category: 'Oportunidades' }], total: 12, current_page: 1, last_page: 3, per_page: 5, unavailable: [] };
|
||||
const html = renderToStaticMarkup(React.createElement(Search, { query: 'energia', results }));
|
||||
assert.match(html, /Oportunidades/);
|
||||
assert.match(html, /Resultados 1–1 de 12/);
|
||||
assert.match(html, /href="\/oportunidades\/energia"/);
|
||||
assert.match(html, /q=energia&page=2/);
|
||||
assert.match(html, /aria-current="page"/);
|
||||
assert.doesNotMatch(html, /emerald/);
|
||||
});
|
||||
|
||||
test('makes source failures explicit without hiding other results', () => {
|
||||
const results = { data: [], total: 0, current_page: 1, last_page: 1, per_page: 5, unavailable: ['Documentos e legislação'] };
|
||||
const html = renderToStaticMarkup(React.createElement(Search, { query: 'terra', results }));
|
||||
assert.match(html, /role="alert"/);
|
||||
assert.match(html, /Não foi possível consultar: Documentos e legislação/);
|
||||
assert.match(html, /Nenhum resultado nas fontes consultadas/);
|
||||
});
|
||||
Reference in New Issue
Block a user