33import 'fake-indexeddb/auto' ;
44import { GetLocationMethod , Persist , nextLoop } from './common.ts' ;
55import type { Persister , Store } from 'tinybase' ;
6+ import { createCustomPersister , createStore } from 'tinybase' ;
67import {
78 mockAutomerge ,
89 mockChangesListener ,
@@ -23,7 +24,6 @@ import {
2324 mockSqliteWasm ,
2425 mockYjs ,
2526} from './mocks.ts' ;
26- import { createStore } from 'tinybase' ;
2727import { pause } from '../common/other.ts' ;
2828
2929describe . 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