36 lines
3.1 KiB
JavaScript
36 lines
3.1 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-replenishment-activation.json', 'utf8'));
|
|
await new Function('fs', 'assert', 'proof', 'return (async()=>{' + common + `
|
|
assert.equal(proof.result, 'applied');
|
|
const requester = client(); await requester.enter('requester');
|
|
assert.equal((await requester.request('/contexto','POST',{area:'procurement',option:'procurement.internal'})).status,302);
|
|
const tasks = await requester.request('/requisicoes/tarefas'); assert.equal(tasks.status,200);
|
|
const task = tasks.page.props.tasks.data.find(row => row.id === 'purchase:' + proof.purchase_id + ':draft'); assert.ok(task);
|
|
const page = await requester.request(task.href); assert.equal(page.status,200);
|
|
const r = page.page.props.requisition;
|
|
assert.equal(r.status,'draft'); assert.equal(r.items.length,1); assert.equal(r.items[0].quantity,'2.000'); assert.equal(r.total_minor,2320);
|
|
assert.equal(r.steps.length,0); assert.equal(page.page.props.canEdit,true); assert.ok(page.page.props.automaticSource);
|
|
const checks = [];
|
|
for (const [role, prepare, review] of [['procurement',true,false],['finance',false,true]]) {
|
|
const viewer=client(); await viewer.enter(role);
|
|
assert.equal((await viewer.request('/contexto','POST',{area:'procurement',option:'procurement.internal'})).status,302);
|
|
const response=await viewer.request('/stock/reposicao?rule_id='+proof.rule_id);
|
|
assert.equal(response.status,200); assert.equal(response.page.props.canPrepare,prepare); assert.equal(response.page.props.canReview,review);
|
|
assert.equal(response.page.props.rules.data.length,1); assert.equal(response.page.props.rules.data[0].state,'approved');
|
|
checks.push({role,result:'passed'});
|
|
}
|
|
const stock=client(); await stock.enter('warehouse');
|
|
assert.equal((await stock.request('/contexto','POST',{area:'procurement',option:'procurement.internal'})).status,302);
|
|
const availability=await stock.request('/stock/disponibilidade?warehouse_id=1'); assert.equal(availability.status,200);
|
|
const row=availability.page.props.rows.data.find(row=>row.id===1); assert.equal(row.physical_milli,1000); assert.equal(row.free_milli,1000);
|
|
await fs.writeFile('docs/proofs/pilot-replenishment-activation-http.json',JSON.stringify({checked_at:new Date().toISOString(),result:'passed',environment:base,
|
|
purchase_id:r.id,purchase_number:r.number,status:r.status,quantity:r.items[0].quantity,total_minor_mzn:r.total_minor,requester_task:true,
|
|
automatic_source_reused:true,physical_milli:row.physical_milli,free_milli:row.free_milli,checks,
|
|
business_commands:false,accounts_or_grants_changed:false,sgf_installation_changed:false,visual_review:false},null,2));
|
|
console.log('Rascunho, origem da reposicao, tarefas, competencias e saldo confirmados por HTTP.');
|
|
` + '})()')(fs, assert, proof);
|