Files
trezor-suite/packages/utils/tests/comparison.test.ts
2025-03-06 13:56:53 +01:00

176 lines
3.6 KiB
TypeScript

import * as comparisonUtils from '../src/comparison';
const isChanged = [
{
testName: 'isChanged',
prev: {
a: 1,
b: 2,
c: 3,
},
current: {
a: 1,
b: 2,
c: 5,
},
filter: undefined,
result: true,
},
{
testName: 'isChanged no change',
prev: {
a: 1,
b: 2,
c: 3,
},
current: {
a: 1,
b: 2,
c: 3,
},
filter: undefined,
result: false,
},
{
testName: 'isChanged deep change with filter',
prev: {
a: 1,
b: 2,
c: {
c1: 1,
c2: 2,
},
},
current: {
a: 1,
b: 2,
c: {
c1: 1,
c2: 4,
},
},
filter: { c: ['c2'] },
result: true,
},
{
testName: 'isChanged deep change without filter',
prev: {
a: 1,
b: 2,
c: {
c1: 1,
c2: 2,
},
},
current: {
a: 1,
b: 2,
c: {
c1: 1,
c2: 4,
},
},
filter: undefined,
result: true,
},
{
testName: 'isChanged deep change with filter on wrong field',
prev: {
a: 1,
b: 2,
c: {
c1: 1,
c2: 2,
},
},
current: {
a: 1,
b: 2,
c: {
c1: 1,
c2: 4,
},
},
filter: { c: ['c1'] },
result: false,
},
{
testName: 'isChanged array no change',
prev: [1],
current: [1],
filter: undefined,
result: false,
},
{
testName: 'isChanged array with changed length',
prev: [],
current: [1],
filter: undefined,
result: true,
},
{
testName: 'isChanged array with changed value',
prev: [0],
current: [1],
filter: undefined,
result: true,
},
{
testName: 'isChanged different types',
prev: 1,
current: [1],
filter: undefined,
result: true,
},
{
testName: 'isChanged object keys different lengths',
prev: { key1: 1 },
current: { key1: 1, key2: 2 },
filter: undefined,
result: true,
},
{
testName: 'isChanged object keys same lengths but different keys',
prev: { key1: 1 },
current: { key2: 2 },
filter: undefined,
result: true,
},
{
testName: 'isChanged different strings',
prev: 'a',
current: 'b',
filter: undefined,
result: true,
},
{
testName: 'isChanged same strings',
prev: 'a',
current: 'a',
filter: undefined,
result: false,
},
{
testName: 'isChanged different numbers',
prev: 1,
current: 2,
filter: undefined,
result: true,
},
{
testName: 'isChanged same numbers',
prev: 1,
current: 1,
filter: undefined,
result: false,
},
];
describe('reducer utils', () => {
isChanged.forEach(f => {
it(`isChanged${f.testName}`, () => {
expect(comparisonUtils.isChanged(f.prev, f.current, f.filter)).toEqual(f.result);
});
});
});