const assert = require('node:assert/strict'); const test = require('node:test'); const { formatOrderRow, normalizeOrderDate, normalizeOrderPayload } = require('../mappers/orderMapper'); test('normalizeOrderDate accepts Brazilian display dates', () => { assert.equal(normalizeOrderDate('28/05/2026'), '2026-05-28'); assert.equal(normalizeOrderDate('28-05-2026'), '2026-05-28'); }); test('normalizeOrderDate accepts ISO-like dates', () => { assert.equal(normalizeOrderDate('2026-05-28'), '2026-05-28'); assert.equal(normalizeOrderDate('2026/05/28 10:30:00'), '2026-05-28'); }); test('normalizeOrderDate rejects invalid dates', () => { assert.equal(normalizeOrderDate(''), null); assert.equal(normalizeOrderDate('not a date'), null); assert.equal(normalizeOrderDate('31/02/2026'), null); }); test('normalizeOrderPayload includes normalized date without changing display date', () => { const payload = normalizeOrderPayload({ Nome_Cliente: 'Cliente Teste', Data_Pedido: '28/05/2026', Valor_Pedido: '120.50', ID_Produto: 'SKU-1', Descricao_Produto: 'Produto', Quantidade: '2', Valor_Unitario: '60.25', ID_Pedido: 'ORDER-1', Fone_Cliente: '(16) 99999-9999' }); assert.equal(payload[1], '28/05/2026'); assert.equal(payload[2], '2026-05-28'); }); test('normalizeOrderPayload maps Tiny ERP metadata aliases', () => { const payload = normalizeOrderPayload({ Nome_Cliente: 'Cliente Teste', Data_Pedido: '28/05/2026', Valor_Pedido: '120.50', ID_Produto: 'SKU-1', Descricao_Produto: 'Produto', Quantidade: '2', Valor_Unitario: '60.25', ID_Pedido: 'ORDER-1', Nome_Fantasia: 'Cliente Fantasia', ID_Vendedor: 123, Nome_Vendedor: 'Maria', Nome_Ecommerce: 'Mercado Livre', Canal_Venda: 'Online', Numero_Ecommerce: 'EC-987' }); assert.equal(payload[10], 'Cliente Fantasia'); assert.equal(payload[11], '123'); assert.equal(payload[12], 'Maria'); assert.equal(payload[13], 'Mercado Livre'); assert.equal(payload[14], 'Online'); assert.equal(payload[15], 'EC-987'); }); test('normalizeOrderPayload maps lower-case metadata names', () => { const payload = normalizeOrderPayload({ Nome_Cliente: 'Cliente Teste', Data_Pedido: '28/05/2026', Valor_Pedido: '120.50', ID_Produto: 'SKU-1', Descricao_Produto: 'Produto', Quantidade: '2', Valor_Unitario: '60.25', ID_Pedido: 'ORDER-1', cliente_nome_fantasia: 'Fantasia Lower', id_vendedor: 'VEN-7', nome_vendedor: 'Joao', marketplace: 'Shopee', canal_venda: 'Marketplace', numero_ecommerce: '100200' }); assert.equal(payload[10], 'Fantasia Lower'); assert.equal(payload[11], 'VEN-7'); assert.equal(payload[12], 'Joao'); assert.equal(payload[13], 'Shopee'); assert.equal(payload[14], 'Marketplace'); assert.equal(payload[15], '100200'); }); test('formatOrderRow returns Tiny ERP metadata fields', () => { const row = formatOrderRow({ cliente_nome: 'Cliente Teste', data_pedido: '28/05/2026', valor_pedido: '120.50', produto_id: 'SKU-1', produto_descricao: 'Produto', quantidade: 2, valor_unitario: '60.25', created_at: '2026-05-28T12:00:00.000Z', pedido_id: 'ORDER-1', cliente_fone: '(16) 99999-9999', cliente_nome_fantasia: 'Cliente Fantasia', id_vendedor: '123', nome_vendedor: 'Maria', marketplace: 'Mercado Livre', canal_venda: 'Online', numero_ecommerce: 'EC-987' }); assert.equal(row.cliente_nome_fantasia, 'Cliente Fantasia'); assert.equal(row.id_vendedor, '123'); assert.equal(row.nome_vendedor, 'Maria'); assert.equal(row.marketplace, 'Mercado Livre'); assert.equal(row.canal_venda, 'Online'); assert.equal(row.numero_ecommerce, 'EC-987'); });