jest-webextension-mock 3.8.9 → 3.8.11

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/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  [![npm](https://img.shields.io/npm/v/jest-webextension-mock.svg)](https://www.npmjs.com/package/jest-webextension-mock) [![npm](https://img.shields.io/npm/l/jest-webextension-mock.svg)](https://github.com/clarkbw/jest-webextension-mock/blob/master/LICENSE) [![Codecov](https://img.shields.io/codecov/c/github/clarkbw/jest-webextension-mock.svg)](https://codecov.io/gh/clarkbw/jest-webextension-mock) [![Greenkeeper badge](https://badges.greenkeeper.io/clarkbw/jest-webextension-mock.svg)](https://greenkeeper.io/) [![Twitter](https://img.shields.io/twitter/url/https/github.com/clarkbw/jest-webextension-mock.svg?style=social)](https://twitter.com/intent/tweet?text=Wow:&url=%5Bobject%20Object%5D)
2
2
 
3
+ 💪 @RickyMarou is an official maintainer. This change was made on `2024-04-12` as @clarkbw has not been able to devote sufficient time necessary for this project.
4
+
3
5
  ## Install
4
6
 
5
7
  For npm:
@@ -0,0 +1,39 @@
1
+ test('chrome.permissions.contains', () => {
2
+ expect(jest.isMockFunction(chrome.permissions.contains)).toBe(true);
3
+ chrome.permissions.contains({ permissions: ['tabs'] }, () => {});
4
+ expect(chrome.permissions.contains).toBeCalled();
5
+ });
6
+
7
+ test('chrome.permissions.getAll', () => {
8
+ expect(jest.isMockFunction(chrome.permissions.getAll)).toBe(true);
9
+ chrome.permissions.getAll(() => {});
10
+ expect(chrome.permissions.getAll).toBeCalled();
11
+ });
12
+
13
+ test('chrome.permissions.remove', () => {
14
+ expect(jest.isMockFunction(chrome.permissions.remove)).toBe(true);
15
+ chrome.permissions.remove({ permissions: ['tabs'] }, () => {});
16
+ expect(chrome.permissions.remove).toBeCalled();
17
+ });
18
+
19
+ test('chrome.permissions.request', () => {
20
+ expect(jest.isMockFunction(chrome.permissions.request)).toBe(true);
21
+ chrome.permissions.request({ permissions: ['tabs'] }, () => {});
22
+ expect(chrome.permissions.request).toBeCalled();
23
+ });
24
+
25
+ test('chrome.permissions.onAdded.addListener', () => {
26
+ expect(jest.isMockFunction(chrome.permissions.onAdded.addListener)).toBe(
27
+ true
28
+ );
29
+ chrome.permissions.onAdded.addListener(() => {});
30
+ expect(chrome.permissions.onAdded.addListener).toBeCalled();
31
+ });
32
+
33
+ test('chrome.permissions.onRemoved.addListener', () => {
34
+ expect(jest.isMockFunction(chrome.permissions.onRemoved.addListener)).toBe(
35
+ true
36
+ );
37
+ chrome.permissions.onRemoved.addListener(() => {});
38
+ expect(chrome.permissions.onRemoved.addListener).toBeCalled();
39
+ });
package/dist/setup.js CHANGED
@@ -2,17 +2,14 @@
2
2
 
3
3
  function ownKeys(object, enumerableOnly) {
4
4
  var keys = Object.keys(object);
5
-
6
5
  if (Object.getOwnPropertySymbols) {
7
6
  var symbols = Object.getOwnPropertySymbols(object);
8
7
  enumerableOnly && (symbols = symbols.filter(function (sym) {
9
8
  return Object.getOwnPropertyDescriptor(object, sym).enumerable;
10
9
  })), keys.push.apply(keys, symbols);
11
10
  }
12
-
13
11
  return keys;
14
12
  }
15
-
16
13
  function _objectSpread2(target) {
17
14
  for (var i = 1; i < arguments.length; i++) {
18
15
  var source = null != arguments[i] ? arguments[i] : {};
@@ -22,10 +19,8 @@ function _objectSpread2(target) {
22
19
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
23
20
  });
24
21
  }
25
-
26
22
  return target;
27
23
  }
28
-
29
24
  function _typeof(obj) {
30
25
  "@babel/helpers - typeof";
31
26
 
@@ -35,7 +30,6 @@ function _typeof(obj) {
35
30
  return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
36
31
  }, _typeof(obj);
37
32
  }
38
-
39
33
  function _defineProperty(obj, key, value) {
40
34
  if (key in obj) {
41
35
  Object.defineProperty(obj, key, {
@@ -47,11 +41,11 @@ function _defineProperty(obj, key, value) {
47
41
  } else {
48
42
  obj[key] = value;
49
43
  }
50
-
51
44
  return obj;
52
45
  }
53
46
 
54
47
  // https://developer.chrome.com/extensions/omnibox
48
+
55
49
  var omnibox = {
56
50
  setDefaultSuggestion: jest.fn(),
57
51
  onInputStarted: {
@@ -91,11 +85,9 @@ var runtime = {
91
85
  onMessageListeners.forEach(function (listener) {
92
86
  return listener(message);
93
87
  });
94
-
95
88
  if (cb !== undefined) {
96
89
  return cb();
97
90
  }
98
-
99
91
  return Promise.resolve();
100
92
  }),
101
93
  onMessage: {
@@ -167,25 +159,22 @@ var tabs = {
167
159
  onMessage: {
168
160
  addListener: jest.fn()
169
161
  },
170
- postMessage: jest.fn() // TODO: add sender
171
-
162
+ postMessage: jest.fn()
163
+ // TODO: add sender
172
164
  };
173
165
  }),
174
166
  create: jest.fn(function () {
175
167
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
176
168
  var cb = arguments.length > 1 ? arguments[1] : undefined;
177
-
178
169
  if (cb !== undefined) {
179
170
  return cb(props);
180
171
  }
181
-
182
172
  return Promise.resolve(props);
183
173
  }),
184
174
  remove: jest.fn(function (tabIds, cb) {
185
175
  if (cb !== undefined) {
186
176
  return cb();
187
177
  }
188
-
189
178
  return Promise.resolve();
190
179
  }),
191
180
  duplicate: jest.fn(function () {
@@ -230,11 +219,9 @@ var tabs = {
230
219
  onMessageListeners.forEach(function (listener) {
231
220
  return listener(tabId, message);
232
221
  });
233
-
234
222
  if (cb !== undefined) {
235
223
  return cb();
236
224
  }
237
-
238
225
  return Promise.resolve();
239
226
  }),
240
227
  reload: jest.fn(function (tabId, reloadProperties, cb) {
@@ -243,7 +230,6 @@ var tabs = {
243
230
  };
244
231
 
245
232
  var store = {};
246
-
247
233
  function resolveKey(key) {
248
234
  if (typeof key === 'string') {
249
235
  var result = {};
@@ -260,37 +246,30 @@ function resolveKey(key) {
260
246
  return acc;
261
247
  }, {});
262
248
  }
263
-
264
249
  throw new Error('Wrong key given');
265
250
  }
266
-
267
251
  var storage = {
268
252
  sync: {
269
253
  get: jest.fn(function (id, cb) {
270
254
  var result = id === null ? store : resolveKey(id);
271
-
272
255
  if (cb !== undefined) {
273
256
  return cb(result);
274
257
  }
275
-
276
258
  return Promise.resolve(result);
277
259
  }),
278
260
  getBytesInUse: jest.fn(function (id, cb) {
279
261
  if (cb !== undefined) {
280
262
  return cb(0);
281
263
  }
282
-
283
264
  return Promise.resolve(0);
284
265
  }),
285
266
  set: jest.fn(function (payload, cb) {
286
267
  Object.keys(payload).forEach(function (key) {
287
268
  return store[key] = payload[key];
288
269
  });
289
-
290
270
  if (cb !== undefined) {
291
271
  return cb();
292
272
  }
293
-
294
273
  return Promise.resolve();
295
274
  }),
296
275
  remove: jest.fn(function (id, cb) {
@@ -298,49 +277,40 @@ var storage = {
298
277
  keys.forEach(function (key) {
299
278
  return delete store[key];
300
279
  });
301
-
302
280
  if (cb !== undefined) {
303
281
  return cb();
304
282
  }
305
-
306
283
  return Promise.resolve();
307
284
  }),
308
285
  clear: jest.fn(function (cb) {
309
286
  store = {};
310
-
311
287
  if (cb !== undefined) {
312
288
  return cb();
313
289
  }
314
-
315
290
  return Promise.resolve();
316
291
  })
317
292
  },
318
293
  local: {
319
294
  get: jest.fn(function (id, cb) {
320
295
  var result = id === null ? store : resolveKey(id);
321
-
322
296
  if (cb !== undefined) {
323
297
  return cb(result);
324
298
  }
325
-
326
299
  return Promise.resolve(result);
327
300
  }),
328
301
  getBytesInUse: jest.fn(function (id, cb) {
329
302
  if (cb !== undefined) {
330
303
  return cb(0);
331
304
  }
332
-
333
305
  return Promise.resolve(0);
334
306
  }),
335
307
  set: jest.fn(function (payload, cb) {
336
308
  Object.keys(payload).forEach(function (key) {
337
309
  return store[key] = payload[key];
338
310
  });
339
-
340
311
  if (cb !== undefined) {
341
312
  return cb();
342
313
  }
343
-
344
314
  return Promise.resolve();
345
315
  }),
346
316
  remove: jest.fn(function (id, cb) {
@@ -348,49 +318,40 @@ var storage = {
348
318
  keys.forEach(function (key) {
349
319
  return delete store[key];
350
320
  });
351
-
352
321
  if (cb !== undefined) {
353
322
  return cb();
354
323
  }
355
-
356
324
  return Promise.resolve();
357
325
  }),
358
326
  clear: jest.fn(function (cb) {
359
327
  store = {};
360
-
361
328
  if (cb !== undefined) {
362
329
  return cb();
363
330
  }
364
-
365
331
  return Promise.resolve();
366
332
  })
367
333
  },
368
334
  managed: {
369
335
  get: jest.fn(function (id, cb) {
370
336
  var result = id === null ? store : resolveKey(id);
371
-
372
337
  if (cb !== undefined) {
373
338
  return cb(result);
374
339
  }
375
-
376
340
  return Promise.resolve(result);
377
341
  }),
378
342
  getBytesInUse: jest.fn(function (id, cb) {
379
343
  if (cb !== undefined) {
380
344
  return cb(0);
381
345
  }
382
-
383
346
  return Promise.resolve(0);
384
347
  }),
385
348
  set: jest.fn(function (payload, cb) {
386
349
  Object.keys(payload).forEach(function (key) {
387
350
  return store[key] = payload[key];
388
351
  });
389
-
390
352
  if (cb !== undefined) {
391
353
  return cb();
392
354
  }
393
-
394
355
  return Promise.resolve();
395
356
  }),
396
357
  remove: jest.fn(function (id, cb) {
@@ -398,20 +359,16 @@ var storage = {
398
359
  keys.forEach(function (key) {
399
360
  return delete store[key];
400
361
  });
401
-
402
362
  if (cb !== undefined) {
403
363
  return cb();
404
364
  }
405
-
406
365
  return Promise.resolve();
407
366
  }),
408
367
  clear: jest.fn(function (cb) {
409
368
  store = {};
410
-
411
369
  if (cb !== undefined) {
412
370
  return cb();
413
371
  }
414
-
415
372
  return Promise.resolve();
416
373
  })
417
374
  },
@@ -426,10 +383,8 @@ var getDetails = function getDetails(details, cb) {
426
383
  if (cb !== undefined) {
427
384
  return cb();
428
385
  }
429
-
430
386
  return Promise.resolve();
431
387
  };
432
-
433
388
  var browserAction = {
434
389
  setTitle: jest.fn(),
435
390
  getTitle: jest.fn(getDetails),
@@ -448,12 +403,12 @@ var browserAction = {
448
403
  };
449
404
 
450
405
  // https://developer.chrome.com/extensions/commands
406
+
451
407
  var commands = {
452
408
  getAll: jest.fn(function (cb) {
453
409
  if (cb !== undefined) {
454
410
  return cb();
455
411
  }
456
-
457
412
  return Promise.resolve();
458
413
  }),
459
414
  onCommand: {
@@ -465,22 +420,17 @@ var cbOrPromise$1 = function cbOrPromise(cb, value) {
465
420
  if (cb !== undefined) {
466
421
  return cb(value);
467
422
  }
468
-
469
423
  return Promise.resolve(value);
470
424
  };
471
-
472
425
  var create = function create(notificationId, options, cb) {
473
426
  if (typeof notificationId !== 'string') {
474
427
  notificationId = 'generated-id';
475
428
  }
476
-
477
429
  if (typeof options === 'function') {
478
430
  cb = options;
479
431
  }
480
-
481
432
  return cbOrPromise$1(cb, notificationId);
482
433
  };
483
-
484
434
  var notifications = {
485
435
  create: jest.fn(create),
486
436
  update: jest.fn(function (notificationId, options, cb) {
@@ -540,10 +490,8 @@ var cbOrPromise = function cbOrPromise(cb, value) {
540
490
  if (cb !== undefined) {
541
491
  return cb(value);
542
492
  }
543
-
544
493
  return Promise.resolve(value);
545
494
  };
546
-
547
495
  var downloads = {
548
496
  acceptDanger: jest.fn(function (downloadId, cb) {
549
497
  return cbOrPromise(cb);
@@ -578,6 +526,20 @@ var downloads = {
578
526
  showDefaultFolder: jest.fn()
579
527
  };
580
528
 
529
+ // https://developer.chrome.com/extensions/permissions
530
+ var permissions = {
531
+ contains: jest.fn(),
532
+ getAll: jest.fn(),
533
+ remove: jest.fn(),
534
+ request: jest.fn(),
535
+ onAdded: {
536
+ addListener: jest.fn()
537
+ },
538
+ onRemoved: {
539
+ addListener: jest.fn()
540
+ }
541
+ };
542
+
581
543
  var geckoProfiler = {
582
544
  stop: jest.fn(function () {
583
545
  return Promise.resolve();
@@ -620,7 +582,8 @@ var chrome = {
620
582
  i18n: i18n,
621
583
  webNavigation: webNavigation,
622
584
  extension: extension,
623
- downloads: downloads
585
+ downloads: downloads,
586
+ permissions: permissions
624
587
  };
625
588
  // Firefox uses 'browser' but aliases it to chrome
626
589
 
@@ -630,14 +593,16 @@ var chrome = {
630
593
  * directly call the module in their `setupFiles` property.
631
594
  */
632
595
  global.chrome = chrome;
633
- global.browser = chrome; // Firefox specific globals
596
+ global.browser = chrome;
597
+
598
+ // Firefox specific globals
634
599
  // if (navigator.userAgent.indexOf('Firefox') !== -1) {
635
600
  // https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts#exportFunction
636
-
637
601
  global.exportFunction = jest.fn(function (func) {
638
602
  return func;
639
- }); // https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts#cloneInto
640
-
603
+ });
604
+ // https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts#cloneInto
641
605
  global.cloneInto = jest.fn(function (obj) {
642
606
  return obj;
643
- }); // }
607
+ });
608
+ // }
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "jest-webextension-mock",
3
- "version": "3.8.9",
3
+ "version": "3.8.11",
4
4
  "description": "Mock the components of a WebExtension",
5
5
  "main": "dist/setup.js",
6
6
  "module": "src/setup.js",
7
- "author": "Bryan Clark <clarkbw@gmail.com> (https://twitter.com/clarkbw)",
7
+ "author": "Marwan Zibaoui <marwan.zibaoui@gmail.com> (https://mas.to/@Rickymarou)",
8
8
  "license": "ISC",
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "https://github.com/clarkbw/jest-webextension-mock.git"
11
+ "url": "https://github.com/RickyMarou/jest-webextension-mock"
12
12
  },
13
13
  "scripts": {
14
14
  "test": "jest",
package/src/index.js CHANGED
@@ -9,13 +9,14 @@ import { i18n } from './i18n';
9
9
  import { webNavigation } from './webNavigation';
10
10
  import { extension } from './extension';
11
11
  import { downloads } from './downloads';
12
+ import { permissions } from './permissions';
12
13
 
13
14
  // Firefox specific API
14
15
  import { geckoProfiler } from './geckoProfiler';
15
16
 
16
17
  globalThis[Symbol.for('jest-webextension-mock')] = {
17
- extensionPath: 'moz-extension://8b413e68-1e0d-4cad-b98e-1eb000799783/',
18
- ...globalThis[Symbol.for('jest-webextension-mock')]
18
+ extensionPath: 'moz-extension://8b413e68-1e0d-4cad-b98e-1eb000799783/',
19
+ ...globalThis[Symbol.for('jest-webextension-mock')],
19
20
  };
20
21
 
21
22
  const chrome = {
@@ -31,6 +32,7 @@ const chrome = {
31
32
  webNavigation,
32
33
  extension,
33
34
  downloads,
35
+ permissions,
34
36
  };
35
37
 
36
38
  export { chrome };
@@ -0,0 +1,17 @@
1
+ // https://developer.chrome.com/extensions/permissions
2
+
3
+ export let onMessageListeners = [];
4
+ export let onMessageExternalListeners = [];
5
+
6
+ export const permissions = {
7
+ contains: jest.fn(),
8
+ getAll: jest.fn(),
9
+ remove: jest.fn(),
10
+ request: jest.fn(),
11
+ onAdded: {
12
+ addListener: jest.fn(),
13
+ },
14
+ onRemoved: {
15
+ addListener: jest.fn(),
16
+ },
17
+ };