Files
compras/scripts/formal-task-integration-http.mjs
2026-11-02 20:27:11 +02:00

42 lines
2.6 KiB
JavaScript

import fs from 'node:fs/promises';
import assert from 'node:assert/strict';
const source = await fs.readFile('scripts/supplier-evaluation-check.mjs', 'utf8');
const common = source.slice(source.indexOf('const base ='), source.indexOf('const author ='));
await new Function('fs', 'assert', 'return (async()=>{' + common + `
const routes = [];
for (const role of ['procurement', 'finance', 'department_head']) {
const viewer = client();
await viewer.enter(role);
assert.equal((await viewer.request('/contexto', 'POST', { area: 'procurement', option: 'procurement.internal' })).status, 302);
const tasks = await viewer.request('/requisicoes/tarefas?module=purchases');
assert.equal(tasks.status, 200);
const formal = tasks.page.props.tasks.data.filter(task => ['qualification_complete', 'admission_review', 'recommendation_review'].includes(task.task));
for (const task of formal) {
const detail = await viewer.request(task.href);
assert.equal(detail.status, 200);
if (task.task === 'qualification_complete') assert.equal(detail.page.props.canAssess, true);
else assert.equal(detail.page.props.history.data[0]?.canReview, true);
}
const index = await viewer.request('/cotacoes');
assert.equal(index.status, 200);
const request = index.page.props.requisitions.data[0];
const components = [];
if (request) {
for (const [path, component] of [['qualificacao', 'purchases/qualification'], ['admissao', 'purchases/admission'], ['recomendacao', 'purchases/recommendation']]) {
const response = await viewer.request('/requisicoes/' + request.id + '/' + path);
assert.equal(response.status, 200);
assert.equal(response.page.component, component);
components.push({ component, result: 'passed' });
}
}
routes.push({ role, formal_tasks_shown: formal.length, task_links_followed: formal.length, components });
}
await fs.writeFile('docs/proofs/formal-task-integration-http.json', JSON.stringify({
checked_at: new Date().toISOString(), environment: base, result: 'passed', routes,
business_commands: false, accounts_or_grants_changed: false, sgf_installation_changed: false,
visual_review: false, coverage: 'Existing current scope and first-page tasks only; pending decisions tested in disposable databases.'
}, null, 2));
console.log('Analise documental, admissao, recomendacao e tarefas conferidas nos ambitos existentes.');
` + '})()')(fs, assert);