first commit
This commit is contained in:
61
test/mapper.test.js
Normal file
61
test/mapper.test.js
Normal file
@@ -0,0 +1,61 @@
|
||||
const test = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
const { mapProductionOrder, normalizeStatus, parseDate, parseNumber } = require('../src/mapper');
|
||||
const { formatTinyDate } = require('../src/tinyClient');
|
||||
|
||||
test('normalizes accepted production order statuses', () => {
|
||||
assert.equal(normalizeStatus('em_aberto'), 'open');
|
||||
assert.equal(normalizeStatus('Em aberto'), 'open');
|
||||
assert.equal(normalizeStatus('Aberta'), 'open');
|
||||
assert.equal(normalizeStatus('andamento'), 'in_progress');
|
||||
assert.equal(normalizeStatus('Em andamento'), 'in_progress');
|
||||
assert.equal(normalizeStatus('Finalizada'), 'finished');
|
||||
assert.equal(normalizeStatus('finalizado'), 'finished');
|
||||
assert.equal(normalizeStatus('Cancelada'), 'canceled');
|
||||
assert.equal(normalizeStatus('cancelled'), 'canceled');
|
||||
assert.equal(normalizeStatus('status desconhecido'), 'open');
|
||||
});
|
||||
|
||||
test('parses Tiny date and numeric variants', () => {
|
||||
assert.equal(parseDate('02/07/2026'), '2026-07-02');
|
||||
assert.equal(parseDate('2026-07-02'), '2026-07-02');
|
||||
assert.equal(parseNumber('1.234,56'), 1234.56);
|
||||
});
|
||||
|
||||
test('formats request dates for Tiny without changing env date semantics', () => {
|
||||
assert.equal(formatTinyDate('2026-07-02', 'DD/MM/YYYY'), '02/07/2026');
|
||||
assert.equal(formatTinyDate('2026-07-02', 'YYYY-MM-DD'), '2026-07-02');
|
||||
assert.equal(formatTinyDate(null, 'DD/MM/YYYY'), null);
|
||||
});
|
||||
|
||||
test('maps Tiny production order payload defensively', () => {
|
||||
const mapped = mapProductionOrder({
|
||||
ordem_producao: {
|
||||
id: 123,
|
||||
numero: 'OP-77',
|
||||
situacao: 'Em andamento',
|
||||
data_emissao: '02/07/2026',
|
||||
data_prevista: '2026-07-10',
|
||||
produto: {
|
||||
codigo: 'SKU-1',
|
||||
descricao: 'Produto teste',
|
||||
unidade: 'UN'
|
||||
},
|
||||
quantidade: '2,5',
|
||||
pedido_venda: 'PV-9',
|
||||
marcadores: [{ marcador: { nome: 'Urgente', cor: '#ff0000' } }]
|
||||
}
|
||||
});
|
||||
|
||||
assert.equal(mapped.order.tinyId, '123');
|
||||
assert.equal(mapped.order.number, 'OP-77');
|
||||
assert.equal(mapped.order.status, 'in_progress');
|
||||
assert.equal(mapped.order.statusLabel, 'Em andamento');
|
||||
assert.equal(mapped.order.orderReference, 'PV-9');
|
||||
assert.equal(mapped.order.issueDate, '2026-07-02');
|
||||
assert.equal(mapped.order.expectedDate, '2026-07-10');
|
||||
assert.equal(mapped.order.productSku, 'SKU-1');
|
||||
assert.equal(mapped.order.productDescription, 'Produto teste');
|
||||
assert.equal(mapped.order.quantity, 2.5);
|
||||
assert.deepEqual(mapped.markers, [{ label: 'Urgente', color: '#ff0000' }]);
|
||||
});
|
||||
Reference in New Issue
Block a user