@absolute/change-tracker-node-sdk
Version:
ChangeTracker SDK for Node.js
98 lines (76 loc) • 3.17 kB
JavaScript
const modelTracker = require('../src/modelTracker');
function getMockModel() {
return {
id: "PRIMA",
descrizione: "Descrizione Prima",
data: Date.UTC(),
prezzo: 126.72,
flagBit: true,
testo: "testo",
utente: {descrizione: "Utente associato"},
anagrafica: {descrizione: "Anagrafica associata"},
righe: [
{
idProdotto: "P1",
prodotto: "prodotto1",
qta: 10,
importo: 100.34,
},
{
idProdotto: "P2",
prodotto: "prodotto2",
qta: 10,
importo: 100.34,
}]
}
}
test('test tracking base', () => {
const model = getMockModel();
const map = modelTracker.createMap(model).mapAll().ignore('testo')
.map(el => el.descrizione + " test", "descrizione");
const fields = map.toList();
expect(fields).toBeInstanceOf(Array);
expect(fields.length).toBe(5);
})
test('test row table model with linked tables', () => {
const model = getMockModel();
const row = modelTracker.createMap(model).mapAll().toRow('PRIMA', [
modelTracker.toTable('righe', model.righe.map(el => modelTracker.mapAll(el).toRow(el.idProdotto)))]
);
expect(row.key).toBe('PRIMA');
expect(row.tables.length).toBe(1);
expect(row.tables[0].name).toBe('righe');
const linkedTable = row.tables[0];
expect(linkedTable.rows.length === 2 &&
linkedTable.rows.every(el => el.key === "P1" || el.key === "P2")).toBeTruthy();
const linkedRow = row.tables[0].rows[0];
expect(linkedRow.fields.length === 4).toBeTruthy();
})
test('test mapping associazioni', () => {
const model = getMockModel();
const map = modelTracker.createMap(model).map(el => el.anagrafica.descrizione, 'anagrafica')
.map('utente.descrizione', 'utente');
const fields = map.toList();
expect(fields).toBeInstanceOf(Array);
expect(fields.length).toBe(2);
expect(fields.some(el => el.name === 'anagrafica')).toBeTruthy()
expect(fields.find(el => el.name === 'anagrafica').prevValue).toBe(model.anagrafica.descrizione)
expect(fields.some(el => el.name === 'utente')).toBeTruthy()
expect(fields.find(el => el.name === 'utente').prevValue).toBe(model.utente.descrizione)
})
test('test mapping errori mapping gestiti su console', () => {
const logSpy = jest.spyOn(console, 'log');
const model = getMockModel();
const map = modelTracker.createMap(model).map(el => el.prodotto.descrizione, 'prodotto')
.map('magazzino.descrizione', 'magazzino');
const fields = map.toList();
expect(fields).toBeInstanceOf(Array);
expect(fields.length).toBe(0);
expect(logSpy).toHaveBeenCalledTimes(2);
expect(logSpy.mock.calls[0]).toEqual(
['ChangeTracker, Error generating Field model for field "prodotto"']
);
expect(logSpy.mock.calls[1]).toEqual(
['ChangeTracker, Error generating Field model for field "magazzino"'],
);
})