UNPKG

@absolute/change-tracker-node-sdk

Version:

ChangeTracker SDK for Node.js

98 lines (76 loc) 3.17 kB
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"'], ); })