Files
compras/scripts/warehouse-exchange-http.mjs
T
2026-11-02 20:27:11 +02:00

33 lines
1.9 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 viewer = client();
await viewer.enter('admin');
const dashboard = await viewer.request('/dashboard');
if (dashboard.page?.props.context?.enforced) {
await viewer.request('/contexto', 'POST', { area: 'procurement', option: 'procurement.internal' });
}
const first = await viewer.request('/stock/integracao/entregas?limit=1', 'GET', undefined, false);
assert.equal(first.status, 200);
const data = JSON.parse(first.text);
assert.equal(data.schema, 'sgc.warehouse.fulfilment-feed.v1');
assert.ok(Array.isArray(data.items) && data.items.length <= 1);
assert.equal(typeof data.has_more, 'boolean');
assert.equal(typeof data.next_cursor, 'string');
const next = await viewer.request('/stock/integracao/entregas?cursor=' + encodeURIComponent(data.next_cursor), 'GET', undefined, false);
assert.equal(next.status, 200);
assert.equal(JSON.parse(next.text).schema, data.schema);
const invalid = await viewer.request('/stock/integracao/entregas?limit=101');
assert.equal(invalid.status, 422);
await fs.writeFile('docs/proofs/warehouse-exchange-http.json', JSON.stringify({
checked_at: new Date().toISOString(), environment: base, result: 'passed',
cursor_roundtrip: true, limit_validated: true, observed_first_page_items: data.items.length,
business_commands: false, accounts_or_grants_changed: false,
sgf_installation_changed: false, visual_review: false
}, null, 2));
console.log('Consulta de integração do armazém e cursor conferidos em HTTP.');
` + '})()')(fs, assert);