33 lines
2.7 KiB
JavaScript
33 lines
2.7 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 proof = JSON.parse(await fs.readFile('docs/proofs/pilot-market-activation.json', 'utf8'));
|
|
await new Function('fs', 'assert', 'proof', 'return (async()=>{' + common + `
|
|
const records=[];
|
|
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 page=await viewer.request('/requisicoes/2/cotacoes');assert.equal(page.status,200);
|
|
const quotes=page.page.props.quotations;assert.ok(quotes);
|
|
const rows=Array.isArray(quotes)?quotes:quotes.data;assert.equal(rows.length,3);
|
|
assert.deepEqual(rows.map(row=>row.total_minor).sort((a,b)=>a-b),[2320,2552,2784]);
|
|
const tasks=await viewer.request('/requisicoes/tarefas?module=purchases');assert.equal(tasks.status,200);
|
|
const evaluate=tasks.page.props.tasks.data.filter(row=>row.task==='quotation_evaluate'&&proof.quotation_ids.some(id=>row.id==='quotation:'+id+':evaluate'));
|
|
const supplierTasks=tasks.page.props.tasks.data.filter(row=>row.task==='supplier_review');
|
|
assert.equal(supplierTasks.length,0);
|
|
const detail=await viewer.request('/requisicoes/2');assert.equal(detail.status,200);assert.equal(detail.page.props.requisition.status,'approved');assert.equal(detail.page.props.requisition.total_minor,2320);
|
|
if(role==='finance') {
|
|
for(const id of [proof.supplier_ids.alternative_a,proof.supplier_ids.alternative_b]) {
|
|
const supplier=await viewer.request('/fornecedores/'+id);assert.equal(supplier.status,200);
|
|
assert.equal(supplier.page.props.supplier.status,'active');assert.equal(supplier.page.props.supplier.reviewed_by,12);
|
|
}
|
|
}
|
|
records.push({role,quotations:rows.length,evaluation_tasks:evaluate.length,pending_supplier_tasks:supplierTasks.length});
|
|
}
|
|
await fs.writeFile('docs/proofs/pilot-market-activation-http.json',JSON.stringify({checked_at:new Date().toISOString(),environment:base,result:'passed',records,
|
|
totals_minor_mzn:[2320,2552,2784],business_commands:false,supplier_selection_or_order:false,accounts_or_grants_changed:false,sgf_installation_changed:false,visual_review:false},null,2));
|
|
console.log('Cadastros independentes, tres propostas e encaminhamento conferidos sem avaliar.');
|
|
` + '})()')(fs, assert, proof);
|