7
7
SessionStorageService
8
8
} from './storage.service' ;
9
9
10
- fdescribe ( 'StorageService' , ( ) => {
10
+ describe ( 'StorageService' , ( ) => {
11
11
12
12
const store = {
13
13
local : undefined as LocalStorageService ,
@@ -117,6 +117,18 @@ fdescribe('StorageService', () => {
117
117
} ) ;
118
118
} ) ;
119
119
120
+ it ( 'getStorageEngine' , async ( done ) => {
121
+ try {
122
+ for ( const type of stores ) {
123
+ const result = await store [ type ] . getStorageEngine ( ) . toPromise ( ) ;
124
+ expect ( result ) . toBe ( ( type === 'session' ) ? 'session' : 'asyncStorage' , type ) ;
125
+ done ( ) ;
126
+ }
127
+ } catch ( err ) {
128
+ done . fail ( err ) ;
129
+ }
130
+ } ) ;
131
+
120
132
describe ( 'observe' , ( ) => {
121
133
it ( 'emits when setItem updates an entry' , async ( done ) => {
122
134
try {
@@ -162,6 +174,42 @@ fdescribe('StorageService', () => {
162
174
} ) ;
163
175
} ) ;
164
176
177
+ it ( 'key' , async ( done ) => {
178
+ try {
179
+ for ( const type of stores ) {
180
+ await store [ type ] . setItem ( 'val1' , 1 ) . toPromise ( ) ;
181
+ await store [ type ] . setItem ( 'val2' , 2 ) . toPromise ( ) ;
182
+
183
+ expect ( await store [ type ] . key ( 0 ) . toPromise ( ) ) . toBe ( store [ type ] [ 'getKey' ] ( 'val1' ) ) ;
184
+ expect ( await store [ type ] . key ( 1 ) . toPromise ( ) ) . toBe ( store [ type ] [ 'getCacheKey' ] ( 'val1' ) ) ;
185
+ expect ( await store [ type ] . key ( 2 ) . toPromise ( ) ) . toBe ( store [ type ] [ 'getKey' ] ( 'val2' ) ) ;
186
+ expect ( await store [ type ] . key ( 3 ) . toPromise ( ) ) . toBe ( store [ type ] [ 'getCacheKey' ] ( 'val2' ) ) ;
187
+
188
+ }
189
+ done ( ) ;
190
+ } catch ( err ) {
191
+ done . fail ( err ) ;
192
+ }
193
+ } ) ;
194
+
195
+ it ( 'length' , async ( done ) => {
196
+ try {
197
+
198
+ for ( const type of stores ) {
199
+ await store [ type ] . setItem ( 'test-val-1' , true ) . toPromise ( ) ;
200
+ await store [ type ] . setItem ( 'test-val-2' , true ) . toPromise ( ) ;
201
+ await store [ type ] . setItem ( 'test-val-3' , true ) . toPromise ( ) ;
202
+ await store [ type ] . setItem ( 'test-val-4' , true ) . toPromise ( ) ;
203
+ expect ( await store [ type ] . length ( ) . toPromise ( ) ) . toBe ( 8 ) ;
204
+ }
205
+
206
+ done ( ) ;
207
+ } catch ( err ) {
208
+ done . fail ( err ) ;
209
+ }
210
+
211
+ } ) ;
212
+
165
213
it ( 'removeItem' , async ( done ) => {
166
214
try {
167
215
for ( const type of stores ) {
@@ -197,15 +245,10 @@ fdescribe('StorageService', () => {
197
245
try {
198
246
for ( const type of stores ) {
199
247
await store [ type ] . setItem ( 'test' , 'test value' ) . toPromise ( ) ;
200
-
201
- const valueField = ( type === 'session' )
202
- ? `${ store . session . prefix } -test`
203
- : 'test' ;
204
- const cacheField = ( type === 'session' )
205
- ? `${ store . session . prefix } -test-${ store . session . cachePostfix } `
206
- : 'test-ttl' ;
207
- expect ( await store [ type ] . key ( 0 ) . toPromise ( ) ) . toBe ( valueField , type ) ;
208
- expect ( await store [ type ] . key ( 1 ) . toPromise ( ) ) . toBe ( cacheField , type ) ;
248
+ const valueKey = store [ type ] [ 'getKey' ] ( 'test' ) ;
249
+ const cacheKey = store [ type ] [ 'getCacheKey' ] ( 'test' ) ;
250
+ expect ( await store [ type ] . key ( 0 ) . toPromise ( ) ) . toBe ( valueKey , type ) ;
251
+ expect ( await store [ type ] . key ( 1 ) . toPromise ( ) ) . toBe ( cacheKey , type ) ;
209
252
}
210
253
211
254
done ( ) ;
@@ -216,15 +259,15 @@ fdescribe('StorageService', () => {
216
259
217
260
} ) ;
218
261
219
- describe ( 'cache expiration ' , ( ) => {
220
- it ( 'expires value' , async ( done ) => {
262
+ describe ( 'cache' , ( ) => {
263
+ it ( 'getItem expires value' , async ( done ) => {
221
264
222
265
try {
223
266
224
267
for ( const type of stores ) {
225
268
await store [ type ] . setItem ( 'test' , 'should be expired (null)' , 1 ) . toPromise ( ) ;
226
269
expect ( await store [ type ] . getItem ( 'test' ) . toPromise ( ) ) . toBe ( 'should be expired (null)' , type ) ;
227
- // wait two seconds
270
+
228
271
await new Promise ( ( resolve ) => setTimeout ( resolve , 1010 ) ) ;
229
272
expect ( await store [ type ] . getItem ( 'test' ) . toPromise ( ) ) . toBe ( null , type ) ;
230
273
}
@@ -233,7 +276,42 @@ fdescribe('StorageService', () => {
233
276
} catch ( err ) {
234
277
done . fail ( err ) ;
235
278
}
279
+ } ) ;
280
+
281
+ it ( 'getItem removes expired value' , async ( done ) => {
282
+
283
+ try {
284
+
285
+ for ( const type of stores ) {
286
+ await store [ type ] . setItem ( 'test' , 'should be expired (null)' , 1 ) . toPromise ( ) ;
287
+ expect ( await store [ type ] . getItem ( 'test' ) . toPromise ( ) ) . toBe ( 'should be expired (null)' , type ) ;
288
+
289
+ await new Promise ( ( resolve ) => setTimeout ( resolve , 1010 ) ) ;
290
+ expect ( await store [ type ] . getItem ( 'test' ) . toPromise ( ) ) . toBe ( null , type ) ;
291
+ expect ( await store [ type ] . key ( 0 ) . toPromise ( ) ) . toBe ( null , type ) ;
292
+ }
236
293
294
+ done ( ) ;
295
+ } catch ( err ) {
296
+ done . fail ( err ) ;
297
+ }
298
+ } ) ;
299
+
300
+ it ( 'clearExpiredCache' , async ( done ) => {
301
+ try {
302
+ for ( const type of stores ) {
303
+ await store [ type ] . setItem ( 'test' , 'some value' , 1 ) . toPromise ( ) ;
304
+ expect ( await store [ type ] . getItem ( 'test' ) . toPromise ( ) ) . toBe ( 'some value' ) ;
305
+
306
+ await new Promise ( ( resolve ) => setTimeout ( resolve , 1010 ) ) ;
307
+ await store [ type ] . clearExpiredCache ( ) . toPromise ( ) ;
308
+ expect ( await store [ type ] . getItem ( 'test' ) . toPromise ( ) ) . toBe ( null , type ) ;
309
+ }
310
+
311
+ done ( ) ;
312
+ } catch ( err ) {
313
+ done . fail ( err ) ;
314
+ }
237
315
} ) ;
238
316
} ) ;
239
317
} ) ;
0 commit comments