37 lines
2.8 KiB
JavaScript
37 lines
2.8 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 ='));
|
|
const code = common + `
|
|
const viewer = client(); await viewer.enter('admin');
|
|
const dashboard = await viewer.request('/dashboard');
|
|
if (dashboard.page?.props.context?.enforced) {
|
|
const selected = await viewer.request('/contexto', 'POST', {area:'procurement',option:'procurement.internal'});
|
|
assert.ok([302,303].includes(selected.status));
|
|
}
|
|
const proof = [];
|
|
for (const view of ['agreements','calendar','imports','alternatives','reservations','deliveries','suggestions','history']) {
|
|
const result = await viewer.request('/compras/fornecimento?view='+view);
|
|
assert.equal(result.status,200); assert.equal(result.page.component, ['suggestions','history'].includes(view)?'supply/'+view:['alternatives','reservations','deliveries'].includes(view)?'supply/coordination':'supply/index'); assert.equal(result.page.props.ready,true);
|
|
assert.equal(result.page.props.canPrepare,false);
|
|
proof.push({view,status:result.status,ready:result.page.props.ready,admin_has_no_automatic_write:true});
|
|
}
|
|
const lots = await viewer.request('/stock/lotes');
|
|
assert.equal(lots.status,200); assert.equal(lots.page.component,'stock/lots'); assert.equal(lots.page.props.ready,true);
|
|
assert.equal(lots.page.props.capabilities.read,true);
|
|
for (const permission of ['prepare','review','hold','release']) assert.equal(lots.page.props.capabilities[permission],false);
|
|
proof.push({view:'lots',status:lots.status,ready:true,admin_has_no_automatic_write:true});
|
|
const dispositions = await viewer.request('/stock/ocorrencias');
|
|
assert.equal(dispositions.status,200); assert.equal(dispositions.page.component,'stock/dispositions'); assert.equal(dispositions.page.props.ready,true);
|
|
for (const permission of ['prepare','review','execute']) assert.equal(dispositions.page.props.capabilities[permission],false);
|
|
proof.push({view:'dispositions',status:dispositions.status,ready:true,admin_has_no_automatic_write:true});
|
|
const reversals = await viewer.request('/stock/estornos');
|
|
assert.equal(reversals.status,200); assert.equal(reversals.page.component,'stock/reversals'); assert.equal(reversals.page.props.ready,true);
|
|
for (const permission of ['prepare','review','execute']) assert.equal(reversals.page.props.capabilities[permission],false);
|
|
proof.push({view:'reversals',status:reversals.status,ready:true,admin_has_no_automatic_write:true});
|
|
await fs.writeFile('docs/proofs/supply-navigation.json', JSON.stringify({checked_at:new Date().toISOString(),checks:proof},null,2));
|
|
console.log('Eleven installed local supply/stock pages verified; no business commands or grants performed.');
|
|
`;
|
|
const run = new Function('fs','assert','return (async()=>{'+code+'})()');
|
|
await run(fs,assert);
|