jest-webextension-mock 3.8.15 → 3.9.0

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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # jest-webextension-mock
2
2
 
3
+ ## 3.9.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Add support for storage.session
8
+
9
+ ## 3.8.16
10
+
11
+ ### Patch Changes
12
+
13
+ - Fix storage.get method throwing when not provided with a key
14
+
3
15
  ## 3.8.15
4
16
 
5
17
  ### Patch Changes
@@ -11,7 +11,7 @@ describe('browser.storage', () => {
11
11
  });
12
12
 
13
13
  describe('browser.storage', () => {
14
- ['sync', 'local', 'managed'].forEach((type) => {
14
+ ['sync', 'local', 'managed', 'session'].forEach((type) => {
15
15
  describe(type, () => {
16
16
  const storage = browser.storage[type];
17
17
  describe('get', () => {
@@ -55,6 +55,9 @@ describe('browser.storage', () => {
55
55
  expect(e.message).toBe('Wrong key given');
56
56
  }
57
57
  });
58
+ test('an undefined key', () => {
59
+ return expect(storage.get()).resolves.toEqual({});
60
+ });
58
61
  afterEach(() => {
59
62
  expect(storage.get).toHaveBeenCalledTimes(1);
60
63
  storage.clear();
package/dist/setup.js CHANGED
@@ -283,7 +283,7 @@ function resolveKey(key, store) {
283
283
  var storage = {
284
284
  sync: {
285
285
  get: jest.fn(function (id, cb) {
286
- var result = id === null ? syncStore : resolveKey(id, syncStore);
286
+ var result = id === null || id === undefined ? syncStore : resolveKey(id, syncStore);
287
287
  if (cb !== undefined) {
288
288
  return cb(result);
289
289
  }
@@ -325,7 +325,49 @@ var storage = {
325
325
  },
326
326
  local: {
327
327
  get: jest.fn(function (id, cb) {
328
- var result = id === null ? localStore : resolveKey(id, localStore);
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: {
369
+ get: jest.fn(function (id, cb) {
370
+ var result = id === null || id === undefined ? localStore : resolveKey(id, localStore);
329
371
  if (cb !== undefined) {
330
372
  return cb(result);
331
373
  }
@@ -367,7 +409,7 @@ var storage = {
367
409
  },
368
410
  managed: {
369
411
  get: jest.fn(function (id, cb) {
370
- var result = id === null ? managedStore : resolveKey(id, managedStore);
412
+ var result = id === null || id === undefined ? managedStore : resolveKey(id, managedStore);
371
413
  if (cb !== undefined) {
372
414
  return cb(result);
373
415
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jest-webextension-mock",
3
- "version": "3.8.15",
3
+ "version": "3.9.0",
4
4
  "description": "Mock the components of a WebExtension",
5
5
  "main": "dist/setup.js",
6
6
  "module": "src/setup.js",
package/src/storage.js CHANGED
@@ -3,6 +3,7 @@ import { createEventListeners } from './createEventListeners';
3
3
  let syncStore = {};
4
4
  let localStore = {};
5
5
  let managedStore = {};
6
+ let sessionStore = {};
6
7
 
7
8
  function resolveKey(key, store) {
8
9
  if (typeof key === 'string') {
@@ -26,7 +27,8 @@ function resolveKey(key, store) {
26
27
  export const storage = {
27
28
  sync: {
28
29
  get: jest.fn((id, cb) => {
29
- const result = id === null ? syncStore : resolveKey(id, syncStore);
30
+ const result =
31
+ id === null || id === undefined ? syncStore : resolveKey(id, syncStore);
30
32
  if (cb !== undefined) {
31
33
  return cb(result);
32
34
  }
@@ -64,7 +66,51 @@ export const storage = {
64
66
  },
65
67
  local: {
66
68
  get: jest.fn((id, cb) => {
67
- const result = id === null ? localStore : resolveKey(id, localStore);
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);
68
114
  if (cb !== undefined) {
69
115
  return cb(result);
70
116
  }
@@ -102,7 +148,10 @@ export const storage = {
102
148
  },
103
149
  managed: {
104
150
  get: jest.fn((id, cb) => {
105
- const result = id === null ? managedStore : resolveKey(id, managedStore);
151
+ const result =
152
+ id === null || id === undefined
153
+ ? managedStore
154
+ : resolveKey(id, managedStore);
106
155
  if (cb !== undefined) {
107
156
  return cb(result);
108
157
  }