const assert = require('node:assert/strict'); const test = require('node:test'); test('upsertOrders persists Tiny ERP metadata columns', async () => { const queries = []; const client = { query: async (sql, params) => { queries.push({ sql, params }); return { rows: [] }; }, release: () => { queries.push({ sql: 'RELEASE' }); } }; const dbPath = require.resolve('../db'); const servicePath = require.resolve('../services/ordersService'); const originalDbCache = require.cache[dbPath]; const originalServiceCache = require.cache[servicePath]; delete require.cache[servicePath]; require.cache[dbPath] = { id: dbPath, filename: dbPath, loaded: true, exports: { pool: { connect: async () => client } } }; try { const { upsertOrders } = require('../services/ordersService'); await upsertOrders([{ 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', cliente_nome_fantasia: 'Cliente Fantasia', id_vendedor: 'VEN-1', nome_vendedor: 'Maria', marketplace: 'Mercado Livre', canal_venda: 'Online', numero_ecommerce: 'EC-987' }]); } finally { delete require.cache[servicePath]; if (originalServiceCache) { require.cache[servicePath] = originalServiceCache; } if (originalDbCache) { require.cache[dbPath] = originalDbCache; } else { delete require.cache[dbPath]; } } const insert = queries.find(query => query.sql.includes('INSERT INTO orders')); assert.ok(insert); assert.match(insert.sql, /cliente_nome_fantasia/); assert.match(insert.sql, /id_vendedor/); assert.match(insert.sql, /nome_vendedor/); assert.match(insert.sql, /marketplace/); assert.match(insert.sql, /canal_venda/); assert.match(insert.sql, /numero_ecommerce/); assert.match(insert.sql, /cliente_nome_fantasia = EXCLUDED\.cliente_nome_fantasia/); assert.equal(insert.params.length, 16); assert.deepEqual(insert.params.slice(10), [ 'Cliente Fantasia', 'VEN-1', 'Maria', 'Mercado Livre', 'Online', 'EC-987' ]); });