@@ -20,6 +20,38 @@ describe('session-resume', function () {
2020 assert . equal ( document . querySelector ( '#my-second-field' ) . value , 'second-field-value' )
2121 } )
2222
23+ it ( 'leaves unrestored values in session storage' , function ( ) {
24+ sessionStorage . setItem (
25+ 'session-resume:test-persist' ,
26+ JSON . stringify ( [
27+ [ 'my-first-field' , 'test2' ] ,
28+ [ 'non-existant-field' , 'test3' ]
29+ ] )
30+ )
31+ document . querySelector ( '#my-first-field' ) . value = 'first-field-value'
32+ document . querySelector ( '#my-second-field' ) . value = 'second-field-value'
33+
34+ restoreResumableFields ( 'test-persist' )
35+
36+ assert . equal ( document . querySelector ( '#my-first-field' ) . value , 'test2' )
37+ assert . equal ( document . querySelector ( '#my-second-field' ) . value , 'second-field-value' )
38+
39+ // Some fields we want to restore are not always present in the DOM
40+ // and may be added later. We hold onto the values until they're needed.
41+ assert . deepEqual ( JSON . parse ( sessionStorage . getItem ( 'session-resume:test-persist' ) ) , [
42+ [ 'non-existant-field' , 'test3' ]
43+ ] )
44+ } )
45+
46+ it ( 'removes the sessionStore key when all the fields were found' , function ( ) {
47+ sessionStorage . setItem ( 'session-resume:test-persist' , JSON . stringify ( [ [ 'my-first-field' , 'test2' ] ] ) )
48+ restoreResumableFields ( 'test-persist' )
49+
50+ // Some fields we want to restore are not always present in the DOM
51+ // and may be added later. We hold onto the values until they're needed.
52+ assert . equal ( sessionStorage . getItem ( 'session-resume:test-persist' ) , null )
53+ } )
54+
2355 it ( 'fires off session:resume events for changed fields' , function ( ) {
2456 const fieldsRestored = { }
2557 document . addEventListener ( 'session:resume' , function ( event ) {
@@ -55,5 +87,32 @@ describe('session-resume', function () {
5587 [ 'my-second-field' , 'test2' ]
5688 ] )
5789 } )
90+
91+ it ( 'holds onto existing values in the store' , function ( ) {
92+ sessionStorage . setItem ( 'session-resume:test-persist' , JSON . stringify ( [ [ 'non-existant-field' , 'test3' ] ] ) )
93+ document . querySelector ( '#my-first-field' ) . value = 'test1'
94+ document . querySelector ( '#my-second-field' ) . value = 'test2'
95+
96+ persistResumableFields ( 'test-persist' )
97+
98+ assert . deepEqual ( JSON . parse ( sessionStorage . getItem ( 'session-resume:test-persist' ) ) , [
99+ [ 'my-first-field' , 'test1' ] ,
100+ [ 'my-second-field' , 'test2' ] ,
101+ [ 'non-existant-field' , 'test3' ]
102+ ] )
103+ } )
104+
105+ it ( 'replaces old values with the latest field values' , function ( ) {
106+ sessionStorage . setItem ( 'session-resume:test-persist' , JSON . stringify ( [ [ 'my-first-field' , 'old data' ] ] ) )
107+ document . querySelector ( '#my-first-field' ) . value = 'test1'
108+ document . querySelector ( '#my-second-field' ) . value = 'test2'
109+
110+ persistResumableFields ( 'test-persist' )
111+
112+ assert . deepEqual ( JSON . parse ( sessionStorage . getItem ( 'session-resume:test-persist' ) ) , [
113+ [ 'my-first-field' , 'test1' ] ,
114+ [ 'my-second-field' , 'test2' ]
115+ ] )
116+ } )
58117 } )
59118} )
0 commit comments