jest-webextension-mock 3.8.12 → 3.8.14
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 +13 -0
- package/__tests__/storage.test.js +20 -0
- package/dist/setup.js +27 -8
- package/package.json +3 -3
- package/src/createEventListeners.js +18 -0
- package/src/storage.js +22 -19
|
@@ -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
|
@@ -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/dist/setup.js
CHANGED
|
@@ -239,6 +239,26 @@ var tabs = {
|
|
|
239
239
|
})
|
|
240
240
|
};
|
|
241
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
|
+
|
|
242
262
|
var store = {};
|
|
243
263
|
function resolveKey(key) {
|
|
244
264
|
if (typeof key === 'string') {
|
|
@@ -298,7 +318,8 @@ var storage = {
|
|
|
298
318
|
return cb();
|
|
299
319
|
}
|
|
300
320
|
return Promise.resolve();
|
|
301
|
-
})
|
|
321
|
+
}),
|
|
322
|
+
onChanged: createEventListeners()
|
|
302
323
|
},
|
|
303
324
|
local: {
|
|
304
325
|
get: jest.fn(function (id, cb) {
|
|
@@ -339,7 +360,8 @@ var storage = {
|
|
|
339
360
|
return cb();
|
|
340
361
|
}
|
|
341
362
|
return Promise.resolve();
|
|
342
|
-
})
|
|
363
|
+
}),
|
|
364
|
+
onChanged: createEventListeners()
|
|
343
365
|
},
|
|
344
366
|
managed: {
|
|
345
367
|
get: jest.fn(function (id, cb) {
|
|
@@ -380,13 +402,10 @@ var storage = {
|
|
|
380
402
|
return cb();
|
|
381
403
|
}
|
|
382
404
|
return Promise.resolve();
|
|
383
|
-
})
|
|
405
|
+
}),
|
|
406
|
+
onChanged: createEventListeners()
|
|
384
407
|
},
|
|
385
|
-
onChanged:
|
|
386
|
-
addListener: jest.fn(),
|
|
387
|
-
removeListener: jest.fn(),
|
|
388
|
-
hasListener: jest.fn()
|
|
389
|
-
}
|
|
408
|
+
onChanged: createEventListeners()
|
|
390
409
|
};
|
|
391
410
|
|
|
392
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.14",
|
|
4
4
|
"description": "Mock the components of a WebExtension",
|
|
5
5
|
"main": "dist/setup.js",
|
|
6
6
|
"module": "src/setup.js",
|
|
@@ -13,16 +13,16 @@
|
|
|
13
13
|
"scripts": {
|
|
14
14
|
"test": "jest",
|
|
15
15
|
"build": "rollup -c",
|
|
16
|
-
"release": "
|
|
16
|
+
"release": "changeset version",
|
|
17
17
|
"prettier": "prettier --write \"{config,src,__{tests,setups}__}/**/*.js\" rollup.config.js",
|
|
18
18
|
"eslint-check": "eslint --print-config .eslintrc.js | eslint-config-prettier-check"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@babel/core": "^7.11.6",
|
|
22
22
|
"@babel/preset-env": "^7.11.5",
|
|
23
|
+
"@changesets/cli": "^2.27.1",
|
|
23
24
|
"babel-core": "^7.0.0-bridge.0",
|
|
24
25
|
"babel-jest": "^26.5.2",
|
|
25
|
-
"bumpp": "^9.4.0",
|
|
26
26
|
"eslint": "^7.11.0",
|
|
27
27
|
"eslint-config-prettier": "^6.12.0",
|
|
28
28
|
"eslint-plugin-prettier": "^3.1.4",
|
|
@@ -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,6 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
import { createEventListeners } from './createEventListeners';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
let syncStore = {};
|
|
4
|
+
let localStore = {};
|
|
5
|
+
let managedStore = {};
|
|
6
|
+
|
|
7
|
+
function resolveKey(key, store) {
|
|
4
8
|
if (typeof key === 'string') {
|
|
5
9
|
const result = {};
|
|
6
10
|
result[key] = store[key];
|
|
@@ -22,7 +26,7 @@ function resolveKey(key) {
|
|
|
22
26
|
export const storage = {
|
|
23
27
|
sync: {
|
|
24
28
|
get: jest.fn((id, cb) => {
|
|
25
|
-
const result = id === null ?
|
|
29
|
+
const result = id === null ? syncStore : resolveKey(id, syncStore);
|
|
26
30
|
if (cb !== undefined) {
|
|
27
31
|
return cb(result);
|
|
28
32
|
}
|
|
@@ -35,7 +39,7 @@ export const storage = {
|
|
|
35
39
|
return Promise.resolve(0);
|
|
36
40
|
}),
|
|
37
41
|
set: jest.fn((payload, cb) => {
|
|
38
|
-
Object.keys(payload).forEach((key) => (
|
|
42
|
+
Object.keys(payload).forEach((key) => (syncStore[key] = payload[key]));
|
|
39
43
|
if (cb !== undefined) {
|
|
40
44
|
return cb();
|
|
41
45
|
}
|
|
@@ -43,23 +47,24 @@ export const storage = {
|
|
|
43
47
|
}),
|
|
44
48
|
remove: jest.fn((id, cb) => {
|
|
45
49
|
const keys = typeof id === 'string' ? [id] : id;
|
|
46
|
-
keys.forEach((key) => delete
|
|
50
|
+
keys.forEach((key) => delete syncStore[key]);
|
|
47
51
|
if (cb !== undefined) {
|
|
48
52
|
return cb();
|
|
49
53
|
}
|
|
50
54
|
return Promise.resolve();
|
|
51
55
|
}),
|
|
52
56
|
clear: jest.fn((cb) => {
|
|
53
|
-
|
|
57
|
+
syncStore = {};
|
|
54
58
|
if (cb !== undefined) {
|
|
55
59
|
return cb();
|
|
56
60
|
}
|
|
57
61
|
return Promise.resolve();
|
|
58
62
|
}),
|
|
63
|
+
onChanged: createEventListeners(),
|
|
59
64
|
},
|
|
60
65
|
local: {
|
|
61
66
|
get: jest.fn((id, cb) => {
|
|
62
|
-
const result = id === null ?
|
|
67
|
+
const result = id === null ? localStore : resolveKey(id, localStore);
|
|
63
68
|
if (cb !== undefined) {
|
|
64
69
|
return cb(result);
|
|
65
70
|
}
|
|
@@ -72,7 +77,7 @@ export const storage = {
|
|
|
72
77
|
return Promise.resolve(0);
|
|
73
78
|
}),
|
|
74
79
|
set: jest.fn((payload, cb) => {
|
|
75
|
-
Object.keys(payload).forEach((key) => (
|
|
80
|
+
Object.keys(payload).forEach((key) => (localStore[key] = payload[key]));
|
|
76
81
|
if (cb !== undefined) {
|
|
77
82
|
return cb();
|
|
78
83
|
}
|
|
@@ -80,23 +85,24 @@ export const storage = {
|
|
|
80
85
|
}),
|
|
81
86
|
remove: jest.fn((id, cb) => {
|
|
82
87
|
const keys = typeof id === 'string' ? [id] : id;
|
|
83
|
-
keys.forEach((key) => delete
|
|
88
|
+
keys.forEach((key) => delete localStore[key]);
|
|
84
89
|
if (cb !== undefined) {
|
|
85
90
|
return cb();
|
|
86
91
|
}
|
|
87
92
|
return Promise.resolve();
|
|
88
93
|
}),
|
|
89
94
|
clear: jest.fn((cb) => {
|
|
90
|
-
|
|
95
|
+
localStore = {};
|
|
91
96
|
if (cb !== undefined) {
|
|
92
97
|
return cb();
|
|
93
98
|
}
|
|
94
99
|
return Promise.resolve();
|
|
95
100
|
}),
|
|
101
|
+
onChanged: createEventListeners(),
|
|
96
102
|
},
|
|
97
103
|
managed: {
|
|
98
104
|
get: jest.fn((id, cb) => {
|
|
99
|
-
const result = id === null ?
|
|
105
|
+
const result = id === null ? managedStore : resolveKey(id, managedStore);
|
|
100
106
|
if (cb !== undefined) {
|
|
101
107
|
return cb(result);
|
|
102
108
|
}
|
|
@@ -109,7 +115,7 @@ export const storage = {
|
|
|
109
115
|
return Promise.resolve(0);
|
|
110
116
|
}),
|
|
111
117
|
set: jest.fn((payload, cb) => {
|
|
112
|
-
Object.keys(payload).forEach((key) => (
|
|
118
|
+
Object.keys(payload).forEach((key) => (managedStore[key] = payload[key]));
|
|
113
119
|
if (cb !== undefined) {
|
|
114
120
|
return cb();
|
|
115
121
|
}
|
|
@@ -117,23 +123,20 @@ export const storage = {
|
|
|
117
123
|
}),
|
|
118
124
|
remove: jest.fn((id, cb) => {
|
|
119
125
|
const keys = typeof id === 'string' ? [id] : id;
|
|
120
|
-
keys.forEach((key) => delete
|
|
126
|
+
keys.forEach((key) => delete managedStore[key]);
|
|
121
127
|
if (cb !== undefined) {
|
|
122
128
|
return cb();
|
|
123
129
|
}
|
|
124
130
|
return Promise.resolve();
|
|
125
131
|
}),
|
|
126
132
|
clear: jest.fn((cb) => {
|
|
127
|
-
|
|
133
|
+
managedStore = {};
|
|
128
134
|
if (cb !== undefined) {
|
|
129
135
|
return cb();
|
|
130
136
|
}
|
|
131
137
|
return Promise.resolve();
|
|
132
138
|
}),
|
|
139
|
+
onChanged: createEventListeners(),
|
|
133
140
|
},
|
|
134
|
-
onChanged:
|
|
135
|
-
addListener: jest.fn(),
|
|
136
|
-
removeListener: jest.fn(),
|
|
137
|
-
hasListener: jest.fn(),
|
|
138
|
-
},
|
|
141
|
+
onChanged: createEventListeners(),
|
|
139
142
|
};
|