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.
- package/.changeset/README.md +8 -0
- package/.changeset/config.json +11 -0
- package/CHANGELOG.md +7 -0
- package/README.md +0 -9
- package/__tests__/storage.test.js +20 -0
- package/__tests__/tabs.test.js +16 -0
- package/dist/setup.js +37 -8
- package/package.json +4 -3
- package/src/createEventListeners.js +18 -0
- package/src/storage.js +5 -5
- package/src/tabs.js +10 -0
- package/.github/workflows/publish.yml +0 -22
|
@@ -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
package/README.md
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
[](https://www.npmjs.com/package/jest-webextension-mock) [](https://github.com/clarkbw/jest-webextension-mock/blob/master/LICENSE) [](https://codecov.io/gh/clarkbw/jest-webextension-mock) [](https://greenkeeper.io/) [](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
|
});
|
package/__tests__/tabs.test.js
CHANGED
|
@@ -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.
|
|
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 }}
|