import { count , config , loadCache } from '../../lib/browser-storage' ; import { nextPrefix , createCache , reset , cachePrefix , cacheVersion , versionKey , countKey , } from './fake_cache' ; describe ( 'Testing mocked localStorage' , ( ) => { const provider = '' ; it ( 'No usable cache' , ( ) => { reset ( { } ) ; expect ( config ) . toEqual ( { local : true , session : true , } ) ; expect ( count ) . toEqual ( { local : 0 , session : 0 , } ) ; loadCache ( ) ; expect ( config ) . toEqual ( { local : false , session : false , } ) ; expect ( count ) . toEqual ( { local : 0 , session : 0 , } ) ; } ) ; it ( 'Empty localStorage' , ( ) => { reset ( { localStorage : createCache ( ) , } ) ; expect ( config ) . toEqual ( { local : true , session : true , } ) ; expect ( count ) . toEqual ( { local : 0 , session : 0 , } ) ; loadCache ( ) ; expect ( config ) . toEqual ( { local : true , session : false , } ) ; expect ( count ) . toEqual ( { local : 0 , session : 0 , } ) ; } ) ; it ( 'Restricted localStorage' , ( ) => { const prefix = nextPrefix ( ) ; const cache = createCache ( ) ; cache . setItem ( versionKey , cacheVersion ) ; cache . setItem ( countKey , '1' ) ; cache . setItem ( cachePrefix + '0' , JSON . stringify ( { cached : Date . now ( ) , provider , data : { prefix : prefix , icons : { foo : { body : '<g></g>' , } , } , } , } ) ) ; cache . canRead = false ; cache . canWrite = false ; reset ( { localStorage : cache , sessionStorage : cache , } ) ; expect ( config ) . toEqual ( { local : true , session : true , } ) ; expect ( count ) . toEqual ( { local : 0 , session : 0 , } ) ; loadCache ( ) ; expect ( config ) . toEqual ( { local : false , session : false , } ) ; expect ( count ) . toEqual ( { local : 0 , session : 0 , } ) ; } ) ; it ( 'localStorage with one item' , ( ) => { const prefix = nextPrefix ( ) ; const cache = createCache ( ) ; cache . setItem ( versionKey , cacheVersion ) ; cache . setItem ( countKey , '1' ) ; cache . setItem ( cachePrefix + '0' , JSON . stringify ( { cached : Date . now ( ) , provider , data : { prefix : prefix , icons : { foo : { body : '<g></g>' , } , } , } , } ) ) ; reset ( { localStorage : cache , } ) ; expect ( config ) . toEqual ( { local : true , session : true , } ) ; expect ( count ) . toEqual ( { local : 0 , session : 0 , } ) ; loadCache ( ) ; expect ( config ) . toEqual ( { local : true , session : false , } ) ; expect ( count ) . toEqual ( { local : 1 , session : 0 , } ) ; } ) ; it ( 'localStorage and sessionStorage' , ( ) => { reset ( { localStorage : createCache ( ) , sessionStorage : createCache ( ) , } ) ; expect ( config ) . toEqual ( { local : true , session : true , } ) ; expect ( count ) . toEqual ( { local : 0 , session : 0 , } ) ; loadCache ( ) ; expect ( config ) . toEqual ( { local : true , session : true , } ) ; expect ( count ) . toEqual ( { local : 0 , session : 0 , } ) ; } ) ; } ) ;