@@ -46,3 +46,31 @@ test('returns cached value with consequent calls', () => {
4646
4747 expect ( JSON . parse ) . toHaveBeenCalledTimes ( 1 )
4848} )
49+
50+ test ( 'throws if state cannot be parsed and no fallback is provided' , ( ) => {
51+ const errorLog = vi . spyOn ( console , 'error' )
52+ errorLog . mockImplementationOnce ( ( ) => { } )
53+
54+ appendInput ( 'app' , 'key' , 'value' )
55+ const spy = vi . spyOn ( JSON , 'parse' )
56+ spy . mockImplementationOnce ( ( ) => {
57+ throw new Error ( 'mocked parsing exception' )
58+ } )
59+
60+ expect ( ( ) => loadState ( 'app' , 'key' ) ) . toThrowError ( 'Could not parse initial state key of app' )
61+ expect ( errorLog ) . toHaveBeenCalledOnce ( )
62+ } )
63+
64+ test ( 'returns fallback if state cannot be parsed but fallback is provided' , ( ) => {
65+ const errorLog = vi . spyOn ( console , 'error' )
66+ errorLog . mockImplementationOnce ( ( ) => { } )
67+
68+ appendInput ( 'app' , 'key' , 'value' )
69+ const spy = vi . spyOn ( JSON , 'parse' )
70+ spy . mockImplementationOnce ( ( ) => {
71+ throw new Error ( 'mocked parsing exception' )
72+ } )
73+
74+ expect ( loadState ( 'app' , 'key' , 'fallback' ) ) . toBe ( 'fallback' )
75+ expect ( errorLog ) . toHaveBeenCalledOnce ( )
76+ } )
0 commit comments