Skip to content

Commit fbafcf1

Browse files
committed
[test] Persister returns invalid content
1 parent 015c582 commit fbafcf1

File tree

1 file changed

+61
-1
lines changed

1 file changed

+61
-1
lines changed

test/unit/persisters/persisters.test.ts

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import 'fake-indexeddb/auto';
44
import {GetLocationMethod, Persist, nextLoop} from './common.ts';
55
import type {Persister, Store} from 'tinybase';
6+
import {createCustomPersister, createStore} from 'tinybase';
67
import {
78
mockAutomerge,
89
mockChangesListener,
@@ -23,7 +24,6 @@ import {
2324
mockSqliteWasm,
2425
mockYjs,
2526
} from './mocks.ts';
26-
import {createStore} from 'tinybase';
2727
import {pause} from '../common/other.ts';
2828

2929
describe.each([
@@ -333,3 +333,63 @@ describe.each([
333333
}
334334
});
335335
});
336+
337+
test('does not error on getPersister returning undefined', async () => {
338+
const store = createStore();
339+
store.setTables({t1: {r1: {c1: 1}}});
340+
const persister = createCustomPersister(
341+
store,
342+
async () => undefined,
343+
async () => {},
344+
() => 0,
345+
() => 0,
346+
);
347+
await persister.load();
348+
expect(store.getTables()).toEqual({t1: {r1: {c1: 1}}});
349+
});
350+
351+
test('does not error on getPersister returning invalid', async () => {
352+
const store = createStore();
353+
store.setTables({t1: {r1: {c1: 1}}});
354+
const persister = createCustomPersister(
355+
store,
356+
async () => 1 as any,
357+
async () => {},
358+
() => 0,
359+
() => 0,
360+
);
361+
await persister.load();
362+
expect(store.getTables()).toEqual({t1: {r1: {c1: 1}}});
363+
});
364+
365+
test('does not error on persister listener returning undefined', async () => {
366+
let triggerListener = (_listener: any) => {};
367+
const store = createStore();
368+
store.setTables({t1: {r1: {c1: 1}}});
369+
const persister = createCustomPersister(
370+
store,
371+
async () => undefined,
372+
async () => {},
373+
(listener) => (triggerListener = listener),
374+
() => 0,
375+
);
376+
await persister.startAutoLoad();
377+
triggerListener(undefined);
378+
expect(store.getTables()).toEqual({t1: {r1: {c1: 1}}});
379+
});
380+
381+
test('does not error on persister listener returning invalid', async () => {
382+
let triggerListener = (_listener: any) => {};
383+
const store = createStore();
384+
store.setTables({t1: {r1: {c1: 1}}});
385+
const persister = createCustomPersister(
386+
store,
387+
async () => 1 as any,
388+
async () => {},
389+
(listener) => (triggerListener = listener),
390+
() => 0,
391+
);
392+
await persister.startAutoLoad();
393+
triggerListener(1);
394+
expect(store.getTables()).toEqual({t1: {r1: {c1: 1}}});
395+
});

0 commit comments

Comments
 (0)