jest-webextension-mock 3.8.11 → 3.8.13

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.
@@ -0,0 +1,8 @@
1
+ # Changesets
2
+
3
+ Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
4
+ with multi-package repos, or single-package repos to help you version and publish your code. You can
5
+ find the full documentation for it [in our repository](https://github.com/changesets/changesets)
6
+
7
+ We have a quick list of common questions to get you started engaging with this project in
8
+ [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
@@ -0,0 +1,11 @@
1
+ {
2
+ "$schema": "https://unpkg.com/@changesets/config@3.0.0/schema.json",
3
+ "changelog": "@changesets/cli/changelog",
4
+ "commit": false,
5
+ "fixed": [],
6
+ "linked": [],
7
+ "access": "restricted",
8
+ "baseBranch": "main",
9
+ "updateInternalDependencies": "patch",
10
+ "ignore": []
11
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ # jest-webextension-mock
2
+
3
+ ## 3.8.13
4
+
5
+ ### Patch Changes
6
+
7
+ - 2800518: Add storage onChange event listeners
package/README.md CHANGED
@@ -1,7 +1,5 @@
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
-
5
3
  ## Install
6
4
 
7
5
  For npm:
@@ -102,10 +100,3 @@ it('should toggle the profiler on from stopped', () => {
102
100
  npm install
103
101
  npm test
104
102
  ```
105
-
106
- ## Publish
107
-
108
- Publishing new releases is automated via the GitHub Action https://github.com/mikeal/merge-release tool.
109
-
110
- To ensure your feature is properly released prefix your commit message with `feat` for any new feature. For example: `feat: new API` and this will bump the minor release number. All other changes will be assumed as patch releases unless you include the string `BREAKING CHANGE` in your commit message or description which will trigger a new major release. (do not do this unless absolutely required)
111
-
@@ -143,6 +143,26 @@ describe('browser.storage', () => {
143
143
  });
144
144
  });
145
145
  });
146
+ test('onChanged', () => {
147
+ const callback = jest.fn();
148
+ expect(jest.isMockFunction(storage.onChanged.addListener)).toBe(true);
149
+ expect(jest.isMockFunction(storage.onChanged.removeListener)).toBe(
150
+ true
151
+ );
152
+ expect(jest.isMockFunction(storage.onChanged.hasListener)).toBe(true);
153
+ expect(jest.isMockFunction(storage.onChanged.hasListeners)).toBe(true);
154
+
155
+ expect(storage.onChanged.hasListeners()).toBe(false);
156
+ expect(storage.onChanged.hasListener(callback)).toBe(false);
157
+
158
+ storage.onChanged.addListener(callback);
159
+ expect(storage.onChanged.hasListeners()).toBe(true);
160
+ expect(storage.onChanged.hasListener(callback)).toBe(true);
161
+
162
+ storage.onChanged.removeListener(callback);
163
+ expect(storage.onChanged.hasListeners()).toBe(false);
164
+ expect(storage.onChanged.hasListener(callback)).toBe(false);
165
+ });
146
166
  });
147
167
  });
148
168
  });
@@ -102,6 +102,22 @@ describe('browser.tabs', () => {
102
102
  expect(browser.tabs.onUpdated[method]).toHaveBeenCalledTimes(1);
103
103
  expect(callback).toHaveBeenCalledTimes(0);
104
104
  });
105
+
106
+ test(`onRemoved.${method}`, () => {
107
+ const callback = jest.fn();
108
+ expect(jest.isMockFunction(browser.tabs.onRemoved[method])).toBe(true);
109
+ browser.tabs.onRemoved[method](callback);
110
+ expect(browser.tabs.onRemoved[method]).toHaveBeenCalledTimes(1);
111
+ expect(callback).toHaveBeenCalledTimes(0);
112
+ });
113
+
114
+ test(`onCreated.${method}`, () => {
115
+ const callback = jest.fn();
116
+ expect(jest.isMockFunction(browser.tabs.onCreated[method])).toBe(true);
117
+ browser.tabs.onCreated[method](callback);
118
+ expect(browser.tabs.onCreated[method]).toHaveBeenCalledTimes(1);
119
+ expect(callback).toHaveBeenCalledTimes(0);
120
+ });
105
121
  });
106
122
  test('reload', (done) => {
107
123
  const callback = jest.fn(() => done());
package/dist/setup.js CHANGED
@@ -215,6 +215,16 @@ var tabs = {
215
215
  removeListener: jest.fn(),
216
216
  hasListener: jest.fn()
217
217
  },
218
+ onRemoved: {
219
+ addListener: jest.fn(),
220
+ removeListener: jest.fn(),
221
+ hasListener: jest.fn()
222
+ },
223
+ onCreated: {
224
+ addListener: jest.fn(),
225
+ removeListener: jest.fn(),
226
+ hasListener: jest.fn()
227
+ },
218
228
  sendMessage: jest.fn(function (tabId, message, cb) {
219
229
  onMessageListeners.forEach(function (listener) {
220
230
  return listener(tabId, message);
@@ -229,6 +239,26 @@ var tabs = {
229
239
  })
230
240
  };
231
241
 
242
+ var createEventListeners = function createEventListeners() {
243
+ var listeners = [];
244
+ return {
245
+ addListener: jest.fn(function (listener) {
246
+ listeners.push(listener);
247
+ }),
248
+ removeListener: jest.fn(function (listener) {
249
+ listeners = listeners.filter(function (l) {
250
+ return l !== listener;
251
+ });
252
+ }),
253
+ hasListener: jest.fn(function (listener) {
254
+ return listeners.includes(listener);
255
+ }),
256
+ hasListeners: jest.fn(function () {
257
+ return listeners.length > 0;
258
+ })
259
+ };
260
+ };
261
+
232
262
  var store = {};
233
263
  function resolveKey(key) {
234
264
  if (typeof key === 'string') {
@@ -288,7 +318,8 @@ var storage = {
288
318
  return cb();
289
319
  }
290
320
  return Promise.resolve();
291
- })
321
+ }),
322
+ onChanged: createEventListeners()
292
323
  },
293
324
  local: {
294
325
  get: jest.fn(function (id, cb) {
@@ -329,7 +360,8 @@ var storage = {
329
360
  return cb();
330
361
  }
331
362
  return Promise.resolve();
332
- })
363
+ }),
364
+ onChanged: createEventListeners()
333
365
  },
334
366
  managed: {
335
367
  get: jest.fn(function (id, cb) {
@@ -370,13 +402,10 @@ var storage = {
370
402
  return cb();
371
403
  }
372
404
  return Promise.resolve();
373
- })
405
+ }),
406
+ onChanged: createEventListeners()
374
407
  },
375
- onChanged: {
376
- addListener: jest.fn(),
377
- removeListener: jest.fn(),
378
- hasListener: jest.fn()
379
- }
408
+ onChanged: createEventListeners()
380
409
  };
381
410
 
382
411
  var getDetails = function getDetails(details, cb) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jest-webextension-mock",
3
- "version": "3.8.11",
3
+ "version": "3.8.13",
4
4
  "description": "Mock the components of a WebExtension",
5
5
  "main": "dist/setup.js",
6
6
  "module": "src/setup.js",
@@ -13,12 +13,14 @@
13
13
  "scripts": {
14
14
  "test": "jest",
15
15
  "build": "rollup -c",
16
+ "release": "changeset version",
16
17
  "prettier": "prettier --write \"{config,src,__{tests,setups}__}/**/*.js\" rollup.config.js",
17
18
  "eslint-check": "eslint --print-config .eslintrc.js | eslint-config-prettier-check"
18
19
  },
19
20
  "devDependencies": {
20
21
  "@babel/core": "^7.11.6",
21
22
  "@babel/preset-env": "^7.11.5",
23
+ "@changesets/cli": "^2.27.1",
22
24
  "babel-core": "^7.0.0-bridge.0",
23
25
  "babel-jest": "^26.5.2",
24
26
  "eslint": "^7.11.0",
@@ -44,6 +46,5 @@
44
46
  "setupFiles": [
45
47
  "./__setups__/chrome.js"
46
48
  ]
47
- },
48
- "dependencies": {}
49
+ }
49
50
  }
@@ -0,0 +1,18 @@
1
+ export const createEventListeners = () => {
2
+ let listeners = [];
3
+
4
+ return {
5
+ addListener: jest.fn((listener) => {
6
+ listeners.push(listener);
7
+ }),
8
+ removeListener: jest.fn((listener) => {
9
+ listeners = listeners.filter((l) => l !== listener);
10
+ }),
11
+ hasListener: jest.fn((listener) => {
12
+ return listeners.includes(listener);
13
+ }),
14
+ hasListeners: jest.fn(() => {
15
+ return listeners.length > 0;
16
+ }),
17
+ };
18
+ };
package/src/storage.js CHANGED
@@ -1,4 +1,5 @@
1
1
  let store = {};
2
+ import { createEventListeners } from './createEventListeners';
2
3
 
3
4
  function resolveKey(key) {
4
5
  if (typeof key === 'string') {
@@ -56,6 +57,7 @@ export const storage = {
56
57
  }
57
58
  return Promise.resolve();
58
59
  }),
60
+ onChanged: createEventListeners(),
59
61
  },
60
62
  local: {
61
63
  get: jest.fn((id, cb) => {
@@ -93,6 +95,7 @@ export const storage = {
93
95
  }
94
96
  return Promise.resolve();
95
97
  }),
98
+ onChanged: createEventListeners(),
96
99
  },
97
100
  managed: {
98
101
  get: jest.fn((id, cb) => {
@@ -130,10 +133,7 @@ export const storage = {
130
133
  }
131
134
  return Promise.resolve();
132
135
  }),
136
+ onChanged: createEventListeners(),
133
137
  },
134
- onChanged: {
135
- addListener: jest.fn(),
136
- removeListener: jest.fn(),
137
- hasListener: jest.fn(),
138
- },
138
+ onChanged: createEventListeners(),
139
139
  };
package/src/tabs.js CHANGED
@@ -45,6 +45,16 @@ export const tabs = {
45
45
  removeListener: jest.fn(),
46
46
  hasListener: jest.fn(),
47
47
  },
48
+ onRemoved: {
49
+ addListener: jest.fn(),
50
+ removeListener: jest.fn(),
51
+ hasListener: jest.fn(),
52
+ },
53
+ onCreated: {
54
+ addListener: jest.fn(),
55
+ removeListener: jest.fn(),
56
+ hasListener: jest.fn(),
57
+ },
48
58
  sendMessage: jest.fn((tabId, message, cb) => {
49
59
  onMessageListeners.forEach((listener) => listener(tabId, message));
50
60
  if (cb !== undefined) {
@@ -1,22 +0,0 @@
1
- on:
2
- push:
3
- branches:
4
- - main
5
-
6
- name: Publish
7
-
8
- jobs:
9
- all:
10
- name: Merge-Release
11
- runs-on: ubuntu-latest
12
- steps:
13
- - uses: actions/checkout@v3
14
- - run: npm ci
15
- - run: npm test
16
- - run: npm run build --if-present
17
- - run: git status --porcelain dist/setup.js
18
- - uses: mikeal/merge-release@master
19
- if: github.ref == 'refs/heads/main'
20
- env:
21
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
22
- NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}