jest-webextension-mock 3.9.0 → 3.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/__tests__/storage.test.js +14 -33
- package/dist/setup.js +75 -144
- package/package.json +1 -1
- package/src/storage.js +36 -146
package/CHANGELOG.md
CHANGED
|
@@ -19,32 +19,21 @@ describe('browser.storage', () => {
|
|
|
19
19
|
test('a string key', (done) => {
|
|
20
20
|
const key = 'test';
|
|
21
21
|
storage.get(key, (result) => {
|
|
22
|
-
expect(result).
|
|
23
|
-
expect(typeof result === 'object').toBeTruthy();
|
|
24
|
-
expect(result).toHaveProperty(key, undefined);
|
|
22
|
+
expect(result).toStrictEqual({});
|
|
25
23
|
done();
|
|
26
24
|
});
|
|
27
25
|
});
|
|
28
26
|
test('an array key', (done) => {
|
|
29
27
|
const keys = ['test1', 'test2'];
|
|
30
28
|
storage.get(keys, (result) => {
|
|
31
|
-
expect(result).
|
|
32
|
-
expect(typeof result === 'object').toBeTruthy();
|
|
33
|
-
keys.forEach((k) => {
|
|
34
|
-
expect(result).toHaveProperty(k, undefined);
|
|
35
|
-
});
|
|
29
|
+
expect(result).toStrictEqual({});
|
|
36
30
|
done();
|
|
37
31
|
});
|
|
38
32
|
});
|
|
39
33
|
test('an object key', (done) => {
|
|
40
34
|
const key = { test: [] };
|
|
41
35
|
storage.get(key, (result) => {
|
|
42
|
-
expect(result).
|
|
43
|
-
expect(typeof result === 'object').toBeTruthy();
|
|
44
|
-
Object.keys(key).forEach((k) => {
|
|
45
|
-
expect(result).toHaveProperty(k);
|
|
46
|
-
expect(result[k]).toEqual(key[k]);
|
|
47
|
-
});
|
|
36
|
+
expect(result).toStrictEqual({ test: [] });
|
|
48
37
|
done();
|
|
49
38
|
});
|
|
50
39
|
});
|
|
@@ -71,8 +60,8 @@ describe('browser.storage', () => {
|
|
|
71
60
|
const key = 'key';
|
|
72
61
|
return expect(storage.get(key)).resolves.toEqual({ key: undefined });
|
|
73
62
|
});
|
|
74
|
-
test('getBytesInUse', (
|
|
75
|
-
const callback = jest.fn(
|
|
63
|
+
test('getBytesInUse', () => {
|
|
64
|
+
const callback = jest.fn();
|
|
76
65
|
expect(jest.isMockFunction(storage.getBytesInUse)).toBe(true);
|
|
77
66
|
storage.getBytesInUse('key', callback);
|
|
78
67
|
expect(storage.getBytesInUse).toHaveBeenCalledTimes(1);
|
|
@@ -81,8 +70,8 @@ describe('browser.storage', () => {
|
|
|
81
70
|
test('getBytesInUse promise', () => {
|
|
82
71
|
return expect(storage.getBytesInUse('key')).resolves.toBe(0);
|
|
83
72
|
});
|
|
84
|
-
test('set', (
|
|
85
|
-
const callback = jest.fn(
|
|
73
|
+
test('set', () => {
|
|
74
|
+
const callback = jest.fn();
|
|
86
75
|
expect(jest.isMockFunction(storage.set)).toBe(true);
|
|
87
76
|
storage.set({ key: 'foo' }, callback);
|
|
88
77
|
expect(storage.set).toHaveBeenCalledTimes(1);
|
|
@@ -91,8 +80,8 @@ describe('browser.storage', () => {
|
|
|
91
80
|
test('set promise', () => {
|
|
92
81
|
return expect(storage.set(1)).resolves.toBeUndefined();
|
|
93
82
|
});
|
|
94
|
-
test('remove', (
|
|
95
|
-
const callback = jest.fn(
|
|
83
|
+
test('remove', () => {
|
|
84
|
+
const callback = jest.fn();
|
|
96
85
|
expect(jest.isMockFunction(storage.remove)).toBe(true);
|
|
97
86
|
storage.remove('key', callback);
|
|
98
87
|
expect(storage.remove).toHaveBeenCalledTimes(1);
|
|
@@ -101,8 +90,8 @@ describe('browser.storage', () => {
|
|
|
101
90
|
test('remove promise', () => {
|
|
102
91
|
return expect(storage.remove(['foo', 'bar'])).resolves.toBeUndefined();
|
|
103
92
|
});
|
|
104
|
-
test('clear', (
|
|
105
|
-
const callback = jest.fn(
|
|
93
|
+
test('clear', () => {
|
|
94
|
+
const callback = jest.fn();
|
|
106
95
|
expect(jest.isMockFunction(browser.storage.sync.clear)).toBe(true);
|
|
107
96
|
storage.clear(callback);
|
|
108
97
|
expect(storage.clear).toHaveBeenCalledTimes(1);
|
|
@@ -120,24 +109,16 @@ describe('browser.storage', () => {
|
|
|
120
109
|
storage.set({ key: 'value', foo: 'bar', foo2: 'bar2' }, () => {
|
|
121
110
|
// get 'key'
|
|
122
111
|
storage.get(['key'], (result) => {
|
|
123
|
-
expect(result).
|
|
124
|
-
expect(typeof result === 'object').toBeTruthy();
|
|
125
|
-
expect(result).toHaveProperty('key', 'value');
|
|
126
|
-
expect(result).not.toHaveProperty('foo');
|
|
127
|
-
expect(result).not.toHaveProperty('foo2');
|
|
112
|
+
expect(result).toStrictEqual({ key: 'value' });
|
|
128
113
|
// remove 'key'
|
|
129
114
|
storage.remove('key', () => {
|
|
130
115
|
// get all values
|
|
131
116
|
storage.get(null, (result) => {
|
|
132
|
-
expect(result).
|
|
133
|
-
expect(result).toHaveProperty('foo', 'bar');
|
|
134
|
-
expect(result).toHaveProperty('foo2', 'bar2');
|
|
117
|
+
expect(result).toStrictEqual({ foo: 'bar', foo2: 'bar2' });
|
|
135
118
|
// clear values
|
|
136
119
|
storage.clear(() => {
|
|
137
120
|
storage.get(['key', 'foo', 'foo2'], (result) => {
|
|
138
|
-
expect(result).
|
|
139
|
-
expect(result).toHaveProperty('foo', undefined);
|
|
140
|
-
expect(result).toHaveProperty('foo2', undefined);
|
|
121
|
+
expect(result).toStrictEqual({});
|
|
141
122
|
done();
|
|
142
123
|
});
|
|
143
124
|
});
|
package/dist/setup.js
CHANGED
|
@@ -43,6 +43,52 @@ function _defineProperty(obj, key, value) {
|
|
|
43
43
|
}
|
|
44
44
|
return obj;
|
|
45
45
|
}
|
|
46
|
+
function _slicedToArray(arr, i) {
|
|
47
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
48
|
+
}
|
|
49
|
+
function _arrayWithHoles(arr) {
|
|
50
|
+
if (Array.isArray(arr)) return arr;
|
|
51
|
+
}
|
|
52
|
+
function _iterableToArrayLimit(arr, i) {
|
|
53
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
54
|
+
if (_i == null) return;
|
|
55
|
+
var _arr = [];
|
|
56
|
+
var _n = true;
|
|
57
|
+
var _d = false;
|
|
58
|
+
var _s, _e;
|
|
59
|
+
try {
|
|
60
|
+
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
|
|
61
|
+
_arr.push(_s.value);
|
|
62
|
+
if (i && _arr.length === i) break;
|
|
63
|
+
}
|
|
64
|
+
} catch (err) {
|
|
65
|
+
_d = true;
|
|
66
|
+
_e = err;
|
|
67
|
+
} finally {
|
|
68
|
+
try {
|
|
69
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
70
|
+
} finally {
|
|
71
|
+
if (_d) throw _e;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return _arr;
|
|
75
|
+
}
|
|
76
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
77
|
+
if (!o) return;
|
|
78
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
79
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
80
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
81
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
82
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
83
|
+
}
|
|
84
|
+
function _arrayLikeToArray(arr, len) {
|
|
85
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
86
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
87
|
+
return arr2;
|
|
88
|
+
}
|
|
89
|
+
function _nonIterableRest() {
|
|
90
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
91
|
+
}
|
|
46
92
|
|
|
47
93
|
// https://developer.chrome.com/extensions/omnibox
|
|
48
94
|
|
|
@@ -259,115 +305,34 @@ var createEventListeners = function createEventListeners() {
|
|
|
259
305
|
};
|
|
260
306
|
};
|
|
261
307
|
|
|
262
|
-
var syncStore = {};
|
|
263
|
-
var localStore = {};
|
|
264
|
-
var managedStore = {};
|
|
265
308
|
function resolveKey(key, store) {
|
|
266
309
|
if (typeof key === 'string') {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
310
|
+
if (key in store) {
|
|
311
|
+
return {
|
|
312
|
+
key: store[key]
|
|
313
|
+
};
|
|
314
|
+
} else {
|
|
315
|
+
return {};
|
|
316
|
+
}
|
|
270
317
|
} else if (Array.isArray(key)) {
|
|
271
|
-
return key.reduce(function (acc,
|
|
272
|
-
acc
|
|
273
|
-
return acc;
|
|
318
|
+
return key.reduce(function (acc, currKey) {
|
|
319
|
+
return _objectSpread2(_objectSpread2({}, acc), resolveKey(currKey, store));
|
|
274
320
|
}, {});
|
|
275
321
|
} else if (_typeof(key) === 'object') {
|
|
276
|
-
return Object.
|
|
277
|
-
|
|
278
|
-
|
|
322
|
+
return Object.entries(key).reduce(function (acc, _ref) {
|
|
323
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
324
|
+
currKey = _ref2[0],
|
|
325
|
+
fallbackValue = _ref2[1];
|
|
326
|
+
return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, currKey, fallbackValue), resolveKey(currKey, store));
|
|
279
327
|
}, {});
|
|
280
328
|
}
|
|
281
329
|
throw new Error('Wrong key given');
|
|
282
330
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
var result = id === null || id === undefined ? syncStore : resolveKey(id, syncStore);
|
|
287
|
-
if (cb !== undefined) {
|
|
288
|
-
return cb(result);
|
|
289
|
-
}
|
|
290
|
-
return Promise.resolve(result);
|
|
291
|
-
}),
|
|
292
|
-
getBytesInUse: jest.fn(function (id, cb) {
|
|
293
|
-
if (cb !== undefined) {
|
|
294
|
-
return cb(0);
|
|
295
|
-
}
|
|
296
|
-
return Promise.resolve(0);
|
|
297
|
-
}),
|
|
298
|
-
set: jest.fn(function (payload, cb) {
|
|
299
|
-
Object.keys(payload).forEach(function (key) {
|
|
300
|
-
return syncStore[key] = payload[key];
|
|
301
|
-
});
|
|
302
|
-
if (cb !== undefined) {
|
|
303
|
-
return cb();
|
|
304
|
-
}
|
|
305
|
-
return Promise.resolve();
|
|
306
|
-
}),
|
|
307
|
-
remove: jest.fn(function (id, cb) {
|
|
308
|
-
var keys = typeof id === 'string' ? [id] : id;
|
|
309
|
-
keys.forEach(function (key) {
|
|
310
|
-
return delete syncStore[key];
|
|
311
|
-
});
|
|
312
|
-
if (cb !== undefined) {
|
|
313
|
-
return cb();
|
|
314
|
-
}
|
|
315
|
-
return Promise.resolve();
|
|
316
|
-
}),
|
|
317
|
-
clear: jest.fn(function (cb) {
|
|
318
|
-
syncStore = {};
|
|
319
|
-
if (cb !== undefined) {
|
|
320
|
-
return cb();
|
|
321
|
-
}
|
|
322
|
-
return Promise.resolve();
|
|
323
|
-
}),
|
|
324
|
-
onChanged: createEventListeners()
|
|
325
|
-
},
|
|
326
|
-
local: {
|
|
327
|
-
get: jest.fn(function (id, cb) {
|
|
328
|
-
var result = id === null || id === undefined ? localStore : resolveKey(id, localStore);
|
|
329
|
-
if (cb !== undefined) {
|
|
330
|
-
return cb(result);
|
|
331
|
-
}
|
|
332
|
-
return Promise.resolve(result);
|
|
333
|
-
}),
|
|
334
|
-
getBytesInUse: jest.fn(function (id, cb) {
|
|
335
|
-
if (cb !== undefined) {
|
|
336
|
-
return cb(0);
|
|
337
|
-
}
|
|
338
|
-
return Promise.resolve(0);
|
|
339
|
-
}),
|
|
340
|
-
set: jest.fn(function (payload, cb) {
|
|
341
|
-
Object.keys(payload).forEach(function (key) {
|
|
342
|
-
return localStore[key] = payload[key];
|
|
343
|
-
});
|
|
344
|
-
if (cb !== undefined) {
|
|
345
|
-
return cb();
|
|
346
|
-
}
|
|
347
|
-
return Promise.resolve();
|
|
348
|
-
}),
|
|
349
|
-
remove: jest.fn(function (id, cb) {
|
|
350
|
-
var keys = typeof id === 'string' ? [id] : id;
|
|
351
|
-
keys.forEach(function (key) {
|
|
352
|
-
return delete localStore[key];
|
|
353
|
-
});
|
|
354
|
-
if (cb !== undefined) {
|
|
355
|
-
return cb();
|
|
356
|
-
}
|
|
357
|
-
return Promise.resolve();
|
|
358
|
-
}),
|
|
359
|
-
clear: jest.fn(function (cb) {
|
|
360
|
-
localStore = {};
|
|
361
|
-
if (cb !== undefined) {
|
|
362
|
-
return cb();
|
|
363
|
-
}
|
|
364
|
-
return Promise.resolve();
|
|
365
|
-
}),
|
|
366
|
-
onChanged: createEventListeners()
|
|
367
|
-
},
|
|
368
|
-
session: {
|
|
331
|
+
function mockStore() {
|
|
332
|
+
var store = {};
|
|
333
|
+
return {
|
|
369
334
|
get: jest.fn(function (id, cb) {
|
|
370
|
-
var result = id === null || id === undefined ?
|
|
335
|
+
var result = id === null || id === undefined ? store : resolveKey(id, store);
|
|
371
336
|
if (cb !== undefined) {
|
|
372
337
|
return cb(result);
|
|
373
338
|
}
|
|
@@ -381,7 +346,7 @@ var storage = {
|
|
|
381
346
|
}),
|
|
382
347
|
set: jest.fn(function (payload, cb) {
|
|
383
348
|
Object.keys(payload).forEach(function (key) {
|
|
384
|
-
return
|
|
349
|
+
return store[key] = payload[key];
|
|
385
350
|
});
|
|
386
351
|
if (cb !== undefined) {
|
|
387
352
|
return cb();
|
|
@@ -391,7 +356,7 @@ var storage = {
|
|
|
391
356
|
remove: jest.fn(function (id, cb) {
|
|
392
357
|
var keys = typeof id === 'string' ? [id] : id;
|
|
393
358
|
keys.forEach(function (key) {
|
|
394
|
-
return delete
|
|
359
|
+
return delete store[key];
|
|
395
360
|
});
|
|
396
361
|
if (cb !== undefined) {
|
|
397
362
|
return cb();
|
|
@@ -399,56 +364,22 @@ var storage = {
|
|
|
399
364
|
return Promise.resolve();
|
|
400
365
|
}),
|
|
401
366
|
clear: jest.fn(function (cb) {
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
return cb();
|
|
405
|
-
}
|
|
406
|
-
return Promise.resolve();
|
|
407
|
-
}),
|
|
408
|
-
onChanged: createEventListeners()
|
|
409
|
-
},
|
|
410
|
-
managed: {
|
|
411
|
-
get: jest.fn(function (id, cb) {
|
|
412
|
-
var result = id === null || id === undefined ? managedStore : resolveKey(id, managedStore);
|
|
413
|
-
if (cb !== undefined) {
|
|
414
|
-
return cb(result);
|
|
415
|
-
}
|
|
416
|
-
return Promise.resolve(result);
|
|
417
|
-
}),
|
|
418
|
-
getBytesInUse: jest.fn(function (id, cb) {
|
|
419
|
-
if (cb !== undefined) {
|
|
420
|
-
return cb(0);
|
|
421
|
-
}
|
|
422
|
-
return Promise.resolve(0);
|
|
423
|
-
}),
|
|
424
|
-
set: jest.fn(function (payload, cb) {
|
|
425
|
-
Object.keys(payload).forEach(function (key) {
|
|
426
|
-
return managedStore[key] = payload[key];
|
|
367
|
+
Object.keys(store).forEach(function (key) {
|
|
368
|
+
return delete store[key];
|
|
427
369
|
});
|
|
428
370
|
if (cb !== undefined) {
|
|
429
371
|
return cb();
|
|
430
372
|
}
|
|
431
373
|
return Promise.resolve();
|
|
432
374
|
}),
|
|
433
|
-
remove: jest.fn(function (id, cb) {
|
|
434
|
-
var keys = typeof id === 'string' ? [id] : id;
|
|
435
|
-
keys.forEach(function (key) {
|
|
436
|
-
return delete managedStore[key];
|
|
437
|
-
});
|
|
438
|
-
if (cb !== undefined) {
|
|
439
|
-
return cb();
|
|
440
|
-
}
|
|
441
|
-
return Promise.resolve();
|
|
442
|
-
}),
|
|
443
|
-
clear: jest.fn(function (cb) {
|
|
444
|
-
managedStore = {};
|
|
445
|
-
if (cb !== undefined) {
|
|
446
|
-
return cb();
|
|
447
|
-
}
|
|
448
|
-
return Promise.resolve();
|
|
449
|
-
}),
|
|
450
375
|
onChanged: createEventListeners()
|
|
451
|
-
}
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
var storage = {
|
|
379
|
+
sync: mockStore(),
|
|
380
|
+
local: mockStore(),
|
|
381
|
+
session: mockStore(),
|
|
382
|
+
managed: mockStore(),
|
|
452
383
|
onChanged: createEventListeners()
|
|
453
384
|
};
|
|
454
385
|
|
package/package.json
CHANGED
package/src/storage.js
CHANGED
|
@@ -1,157 +1,40 @@
|
|
|
1
1
|
import { createEventListeners } from './createEventListeners';
|
|
2
2
|
|
|
3
|
-
let syncStore = {};
|
|
4
|
-
let localStore = {};
|
|
5
|
-
let managedStore = {};
|
|
6
|
-
let sessionStore = {};
|
|
7
|
-
|
|
8
3
|
function resolveKey(key, store) {
|
|
9
4
|
if (typeof key === 'string') {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
if (key in store) {
|
|
6
|
+
return { key: store[key] };
|
|
7
|
+
} else {
|
|
8
|
+
return {};
|
|
9
|
+
}
|
|
13
10
|
} else if (Array.isArray(key)) {
|
|
14
|
-
return key.reduce(
|
|
15
|
-
acc
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
return key.reduce(
|
|
12
|
+
(acc, currKey) => ({
|
|
13
|
+
...acc,
|
|
14
|
+
...resolveKey(currKey, store),
|
|
15
|
+
}),
|
|
16
|
+
{}
|
|
17
|
+
);
|
|
18
18
|
} else if (typeof key === 'object') {
|
|
19
|
-
return Object.
|
|
20
|
-
acc[
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
return Object.entries(key).reduce(
|
|
20
|
+
(acc, [currKey, fallbackValue]) => ({
|
|
21
|
+
...acc,
|
|
22
|
+
[currKey]: fallbackValue,
|
|
23
|
+
...resolveKey(currKey, store),
|
|
24
|
+
}),
|
|
25
|
+
{}
|
|
26
|
+
);
|
|
23
27
|
}
|
|
24
28
|
throw new Error('Wrong key given');
|
|
25
29
|
}
|
|
26
30
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
id === null || id === undefined ? syncStore : resolveKey(id, syncStore);
|
|
32
|
-
if (cb !== undefined) {
|
|
33
|
-
return cb(result);
|
|
34
|
-
}
|
|
35
|
-
return Promise.resolve(result);
|
|
36
|
-
}),
|
|
37
|
-
getBytesInUse: jest.fn((id, cb) => {
|
|
38
|
-
if (cb !== undefined) {
|
|
39
|
-
return cb(0);
|
|
40
|
-
}
|
|
41
|
-
return Promise.resolve(0);
|
|
42
|
-
}),
|
|
43
|
-
set: jest.fn((payload, cb) => {
|
|
44
|
-
Object.keys(payload).forEach((key) => (syncStore[key] = payload[key]));
|
|
45
|
-
if (cb !== undefined) {
|
|
46
|
-
return cb();
|
|
47
|
-
}
|
|
48
|
-
return Promise.resolve();
|
|
49
|
-
}),
|
|
50
|
-
remove: jest.fn((id, cb) => {
|
|
51
|
-
const keys = typeof id === 'string' ? [id] : id;
|
|
52
|
-
keys.forEach((key) => delete syncStore[key]);
|
|
53
|
-
if (cb !== undefined) {
|
|
54
|
-
return cb();
|
|
55
|
-
}
|
|
56
|
-
return Promise.resolve();
|
|
57
|
-
}),
|
|
58
|
-
clear: jest.fn((cb) => {
|
|
59
|
-
syncStore = {};
|
|
60
|
-
if (cb !== undefined) {
|
|
61
|
-
return cb();
|
|
62
|
-
}
|
|
63
|
-
return Promise.resolve();
|
|
64
|
-
}),
|
|
65
|
-
onChanged: createEventListeners(),
|
|
66
|
-
},
|
|
67
|
-
local: {
|
|
68
|
-
get: jest.fn((id, cb) => {
|
|
69
|
-
const result =
|
|
70
|
-
id === null || id === undefined
|
|
71
|
-
? localStore
|
|
72
|
-
: resolveKey(id, localStore);
|
|
73
|
-
if (cb !== undefined) {
|
|
74
|
-
return cb(result);
|
|
75
|
-
}
|
|
76
|
-
return Promise.resolve(result);
|
|
77
|
-
}),
|
|
78
|
-
getBytesInUse: jest.fn((id, cb) => {
|
|
79
|
-
if (cb !== undefined) {
|
|
80
|
-
return cb(0);
|
|
81
|
-
}
|
|
82
|
-
return Promise.resolve(0);
|
|
83
|
-
}),
|
|
84
|
-
set: jest.fn((payload, cb) => {
|
|
85
|
-
Object.keys(payload).forEach((key) => (localStore[key] = payload[key]));
|
|
86
|
-
if (cb !== undefined) {
|
|
87
|
-
return cb();
|
|
88
|
-
}
|
|
89
|
-
return Promise.resolve();
|
|
90
|
-
}),
|
|
91
|
-
remove: jest.fn((id, cb) => {
|
|
92
|
-
const keys = typeof id === 'string' ? [id] : id;
|
|
93
|
-
keys.forEach((key) => delete localStore[key]);
|
|
94
|
-
if (cb !== undefined) {
|
|
95
|
-
return cb();
|
|
96
|
-
}
|
|
97
|
-
return Promise.resolve();
|
|
98
|
-
}),
|
|
99
|
-
clear: jest.fn((cb) => {
|
|
100
|
-
localStore = {};
|
|
101
|
-
if (cb !== undefined) {
|
|
102
|
-
return cb();
|
|
103
|
-
}
|
|
104
|
-
return Promise.resolve();
|
|
105
|
-
}),
|
|
106
|
-
onChanged: createEventListeners(),
|
|
107
|
-
},
|
|
108
|
-
session: {
|
|
109
|
-
get: jest.fn((id, cb) => {
|
|
110
|
-
const result =
|
|
111
|
-
id === null || id === undefined
|
|
112
|
-
? localStore
|
|
113
|
-
: resolveKey(id, localStore);
|
|
114
|
-
if (cb !== undefined) {
|
|
115
|
-
return cb(result);
|
|
116
|
-
}
|
|
117
|
-
return Promise.resolve(result);
|
|
118
|
-
}),
|
|
119
|
-
getBytesInUse: jest.fn((id, cb) => {
|
|
120
|
-
if (cb !== undefined) {
|
|
121
|
-
return cb(0);
|
|
122
|
-
}
|
|
123
|
-
return Promise.resolve(0);
|
|
124
|
-
}),
|
|
125
|
-
set: jest.fn((payload, cb) => {
|
|
126
|
-
Object.keys(payload).forEach((key) => (localStore[key] = payload[key]));
|
|
127
|
-
if (cb !== undefined) {
|
|
128
|
-
return cb();
|
|
129
|
-
}
|
|
130
|
-
return Promise.resolve();
|
|
131
|
-
}),
|
|
132
|
-
remove: jest.fn((id, cb) => {
|
|
133
|
-
const keys = typeof id === 'string' ? [id] : id;
|
|
134
|
-
keys.forEach((key) => delete localStore[key]);
|
|
135
|
-
if (cb !== undefined) {
|
|
136
|
-
return cb();
|
|
137
|
-
}
|
|
138
|
-
return Promise.resolve();
|
|
139
|
-
}),
|
|
140
|
-
clear: jest.fn((cb) => {
|
|
141
|
-
localStore = {};
|
|
142
|
-
if (cb !== undefined) {
|
|
143
|
-
return cb();
|
|
144
|
-
}
|
|
145
|
-
return Promise.resolve();
|
|
146
|
-
}),
|
|
147
|
-
onChanged: createEventListeners(),
|
|
148
|
-
},
|
|
149
|
-
managed: {
|
|
31
|
+
function mockStore() {
|
|
32
|
+
const store = {};
|
|
33
|
+
|
|
34
|
+
return {
|
|
150
35
|
get: jest.fn((id, cb) => {
|
|
151
36
|
const result =
|
|
152
|
-
id === null || id === undefined
|
|
153
|
-
? managedStore
|
|
154
|
-
: resolveKey(id, managedStore);
|
|
37
|
+
id === null || id === undefined ? store : resolveKey(id, store);
|
|
155
38
|
if (cb !== undefined) {
|
|
156
39
|
return cb(result);
|
|
157
40
|
}
|
|
@@ -164,7 +47,7 @@ export const storage = {
|
|
|
164
47
|
return Promise.resolve(0);
|
|
165
48
|
}),
|
|
166
49
|
set: jest.fn((payload, cb) => {
|
|
167
|
-
Object.keys(payload).forEach((key) => (
|
|
50
|
+
Object.keys(payload).forEach((key) => (store[key] = payload[key]));
|
|
168
51
|
if (cb !== undefined) {
|
|
169
52
|
return cb();
|
|
170
53
|
}
|
|
@@ -172,20 +55,27 @@ export const storage = {
|
|
|
172
55
|
}),
|
|
173
56
|
remove: jest.fn((id, cb) => {
|
|
174
57
|
const keys = typeof id === 'string' ? [id] : id;
|
|
175
|
-
keys.forEach((key) => delete
|
|
58
|
+
keys.forEach((key) => delete store[key]);
|
|
176
59
|
if (cb !== undefined) {
|
|
177
60
|
return cb();
|
|
178
61
|
}
|
|
179
62
|
return Promise.resolve();
|
|
180
63
|
}),
|
|
181
64
|
clear: jest.fn((cb) => {
|
|
182
|
-
|
|
65
|
+
Object.keys(store).forEach((key) => delete store[key]);
|
|
183
66
|
if (cb !== undefined) {
|
|
184
67
|
return cb();
|
|
185
68
|
}
|
|
186
69
|
return Promise.resolve();
|
|
187
70
|
}),
|
|
188
71
|
onChanged: createEventListeners(),
|
|
189
|
-
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export const storage = {
|
|
76
|
+
sync: mockStore(),
|
|
77
|
+
local: mockStore(),
|
|
78
|
+
session: mockStore(),
|
|
79
|
+
managed: mockStore(),
|
|
190
80
|
onChanged: createEventListeners(),
|
|
191
81
|
};
|