commit13
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import fs from 'node:fs/promises';
|
||||
import {
|
||||
actionsFor,
|
||||
commandEnvelope,
|
||||
limitMinor,
|
||||
limitMajor,
|
||||
} from '../integrations/sgf/internal-requisitions/screen.mjs';
|
||||
|
||||
const own = { requester_id: 1, status: 'draft', steps: [] };
|
||||
assert.deepEqual(actionsFor(own, 1, { prepare: true }), ['edit', 'submit']);
|
||||
assert.deepEqual(actionsFor(own, 2, { prepare: true }), []);
|
||||
const pending = {
|
||||
...own,
|
||||
status: 'pending',
|
||||
steps: [
|
||||
{ role: 'department_head', decision: 'pending', approver_id: null },
|
||||
],
|
||||
};
|
||||
assert.deepEqual(actionsFor(pending, 1, { department_head: true }), []);
|
||||
assert.deepEqual(actionsFor(pending, 2, { department_head: true }), [
|
||||
'approved',
|
||||
'rejected',
|
||||
]);
|
||||
assert.deepEqual(actionsFor(pending, 2, {}), []);
|
||||
assert.deepEqual(
|
||||
actionsFor(
|
||||
{
|
||||
...pending,
|
||||
steps: [
|
||||
{
|
||||
role: 'department_head',
|
||||
decision: 'approved',
|
||||
approver_id: 2,
|
||||
},
|
||||
{ role: 'finance', decision: 'pending' },
|
||||
],
|
||||
},
|
||||
2,
|
||||
{ finance: true },
|
||||
),
|
||||
[],
|
||||
);
|
||||
assert.deepEqual(
|
||||
actionsFor({ ...pending, status: 'approved' }, 2, {
|
||||
department_head: true,
|
||||
}),
|
||||
[],
|
||||
);
|
||||
const key = '12345678-1234-4234-8234-123456789012';
|
||||
assert.deepEqual(commandEnvelope(key, 3, { decision: 'approved' }), {
|
||||
operation_key: key,
|
||||
version: 3,
|
||||
decision: 'approved',
|
||||
});
|
||||
assert.equal(limitMinor('1000.01'), 100001);
|
||||
assert.equal(limitMajor(100001), '1000.01');
|
||||
assert.equal(limitMinor('1000000000000.00'), 100000000000000);
|
||||
assert.throws(() => limitMinor('1.001'));
|
||||
assert.throws(() => limitMinor('1000000000000.01'));
|
||||
const html = await fs.readFile(
|
||||
new URL(
|
||||
'../integrations/sgf/internal-requisitions/screen.php',
|
||||
import.meta.url,
|
||||
),
|
||||
'utf8',
|
||||
);
|
||||
for (const text of [
|
||||
'Guardar rascunho',
|
||||
'Histórico por versão',
|
||||
'Centro de custo',
|
||||
'Parametrização',
|
||||
'Compras internas',
|
||||
'ir-contract',
|
||||
])
|
||||
assert.ok(html.includes(text));
|
||||
const script = await fs.readFile(
|
||||
new URL(
|
||||
'../integrations/sgf/internal-requisitions/screen.mjs',
|
||||
import.meta.url,
|
||||
),
|
||||
'utf8',
|
||||
);
|
||||
assert.ok(!script.includes('innerHTML'));
|
||||
for (const header of ['X-CSRF-TOKEN', 'X-SGF-Context', 'X-Purchasing-Context'])
|
||||
assert.ok(script.includes(header));
|
||||
console.log(
|
||||
JSON.stringify({
|
||||
passed: true,
|
||||
checks: 23,
|
||||
browser_used: false,
|
||||
scope: 'screen action model, exact limits, retry envelope, safe text rendering and context headers',
|
||||
}),
|
||||
);
|
||||
Reference in New Issue
Block a user