Skip to content

Commit bf6f274

Browse files
committed
[tests] Metric/Index/Relationship events can't mutate store
1 parent 651696b commit bf6f274

File tree

4 files changed

+43
-2
lines changed

4 files changed

+43
-2
lines changed

test/unit/indexes.test.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1757,6 +1757,19 @@ describe('Listens to SliceRowIds when sets', () => {
17571757
});
17581758

17591759
describe('Miscellaneous', () => {
1760+
test('Listener cannot mutate original store', () => {
1761+
const listener = jest.fn(() => {
1762+
store.setValue('mutated', true);
1763+
});
1764+
indexes.setIndexDefinition('i1', 't1', 'c1');
1765+
indexes.addSliceIdsListener('i1', listener);
1766+
store.setCell('t1', 'r1', 'c1', 1);
1767+
expect(listener).toHaveBeenCalledTimes(1);
1768+
expect(store.getTables()).toEqual({t1: {r1: {c1: 1}}});
1769+
expect(indexes.getSliceIds('i1')).toEqual(['1']);
1770+
expect(store.getValues()).toEqual({});
1771+
});
1772+
17601773
test('bad sort key', () => {
17611774
indexes.setIndexDefinition('i1', 't1', 'c2', 'c0');
17621775
setCells();

test/unit/metrics.test.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,19 @@ describe('Listens to Metrics when sets', () => {
579579
});
580580

581581
describe('Miscellaneous', () => {
582+
test('Listener cannot mutate original store', () => {
583+
const listener = jest.fn(() => {
584+
store.setValue('mutated', true);
585+
});
586+
metrics.setMetricDefinition('m1', 't1');
587+
metrics.addMetricListener('m1', listener);
588+
store.setCell('t1', 'r1', 'c1', 1);
589+
expect(listener).toHaveBeenCalledTimes(1);
590+
expect(store.getTables()).toEqual({t1: {r1: {c1: 1}}});
591+
expect(metrics.getMetric('m1')).toEqual(1);
592+
expect(store.getValues()).toEqual({});
593+
});
594+
582595
test('remove listener', () => {
583596
listener = createMetricsListener(metrics);
584597
const listenerId = listener.listenToMetric('/m1', 'm1');

test/unit/queries.test.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4266,11 +4266,13 @@ describe('Sorted Row Ids', () => {
42664266

42674267
describe('Miscellaneous', () => {
42684268
test('Listener cannot mutate original store', () => {
4269-
queries.setQueryDefinition('q1', 't1', ({select}) => select('c1'));
4270-
queries.addResultTableListener('q1', () => {
4269+
const listener = jest.fn(() => {
42714270
store.setValue('mutated', true);
42724271
});
4272+
queries.setQueryDefinition('q1', 't1', ({select}) => select('c1'));
4273+
queries.addResultTableListener('q1', listener);
42734274
store.setCell('t1', 'r1', 'c1', 1);
4275+
expect(listener).toHaveBeenCalledTimes(1);
42744276
expect(store.getTables()).toEqual({t1: {r1: {c1: 1}}});
42754277
expect(queries.getResultTable('q1')).toEqual({r1: {c1: 1}});
42764278
expect(store.getValues()).toEqual({});

test/unit/relationships.test.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -724,6 +724,19 @@ describe('Linked lists', () => {
724724
});
725725

726726
describe('Miscellaneous', () => {
727+
test('Listener cannot mutate original store', () => {
728+
const listener = jest.fn(() => {
729+
store.setValue('mutated', true);
730+
});
731+
relationships.setRelationshipDefinition('r1', 't1', 't1', 'c1');
732+
relationships.addRemoteRowIdListener('r1', 'r1', listener);
733+
store.setCell('t1', 'r1', 'c1', 'r1');
734+
expect(listener).toHaveBeenCalledTimes(1);
735+
expect(store.getTables()).toEqual({t1: {r1: {c1: 'r1'}}});
736+
expect(relationships.getRemoteRowId('r1', 'r1')).toEqual('r1');
737+
expect(store.getValues()).toEqual({});
738+
});
739+
727740
test('remove listener', () => {
728741
listener = createRelationshipsListener(relationships);
729742
const listenerId = listener.listenToRemoteRowId('/r1/r1', 'r1', 'r1');

0 commit comments

Comments
 (0)