84 lines
2.6 KiB
JavaScript
84 lines
2.6 KiB
JavaScript
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'
|
|
]);
|
|
});
|