39 lines
1.4 KiB
JavaScript
39 lines
1.4 KiB
JavaScript
const { test } = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const { buildContextFingerprint, stableStringify } = require('./hash');
|
|
|
|
function baseTicket(overrides) {
|
|
return Object.assign({
|
|
status: 2,
|
|
tecnico_atribuido: 'Wagner',
|
|
categoria: 'Rede',
|
|
entidade: 'Matriz',
|
|
followups: [{ id: 1, date: '2026-08-20 10:00:00' }],
|
|
tasks: [{ id: 1, status: 1, date: '2026-08-19 09:00:00' }],
|
|
dias_aberto: 10,
|
|
dias_sem_interacao: 3,
|
|
}, overrides);
|
|
}
|
|
|
|
test('alterar apenas dias_aberto/dias_sem_interacao NAO muda o hash', () => {
|
|
const a = buildContextFingerprint(baseTicket({ dias_aberto: 10, dias_sem_interacao: 3 }));
|
|
const b = buildContextFingerprint(baseTicket({ dias_aberto: 11, dias_sem_interacao: 4 }));
|
|
assert.equal(a, b);
|
|
});
|
|
|
|
test('novo followup MUDA o hash', () => {
|
|
const a = buildContextFingerprint(baseTicket({}));
|
|
const b = buildContextFingerprint(baseTicket({ followups: [{ id: 1, date: '2026-08-20 10:00:00' }, { id: 2, date: '2026-08-21 08:00:00' }] }));
|
|
assert.notEqual(a, b);
|
|
});
|
|
|
|
test('mudanca de tecnico MUDA o hash', () => {
|
|
const a = buildContextFingerprint(baseTicket({ tecnico_atribuido: 'Wagner' }));
|
|
const b = buildContextFingerprint(baseTicket({ tecnico_atribuido: 'Eric' }));
|
|
assert.notEqual(a, b);
|
|
});
|
|
|
|
test('stableStringify ignora ordem de chaves', () => {
|
|
assert.equal(stableStringify({ b: 1, a: 2 }), stableStringify({ a: 2, b: 1 }));
|
|
});
|