Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Socket
Sign inDemoInstall

jest-webextension-mock

Package Overview
Dependencies
Maintainers
1
Versions
56
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jest-webextension-mock - npm Package Compare versions

Comparing version 3.6.1 to 3.7.0

8

__tests__/browserAction.test.js

@@ -8,3 +8,3 @@ describe('browser.browserAction', () => {

});
test('getTitle', done => {
test('getTitle', (done) => {
const callback = jest.fn(() => done());

@@ -33,3 +33,3 @@ expect(jest.isMockFunction(browser.browserAction.getTitle)).toBe(true);

});
test('getPopup', done => {
test('getPopup', (done) => {
const callback = jest.fn(() => done());

@@ -51,3 +51,3 @@ expect(jest.isMockFunction(browser.browserAction.getPopup)).toBe(true);

});
test('getBadgeText', done => {
test('getBadgeText', (done) => {
const callback = jest.fn(() => done());

@@ -75,3 +75,3 @@ expect(jest.isMockFunction(browser.browserAction.getBadgeText)).toBe(true);

});
test('getBadgeBackgroundColor', done => {
test('getBadgeBackgroundColor', (done) => {
const callback = jest.fn(() => done());

@@ -78,0 +78,0 @@ expect(

describe('browser.commands', () => {
test('getAll', done => {
test('getAll', (done) => {
const callback = jest.fn(() => done());

@@ -4,0 +4,0 @@ expect(jest.isMockFunction(browser.commands.getAll)).toBe(true);

describe('chrome.notifications', () => {
test('create', done => {
test('create', (done) => {
const options = { type: 'basic' };

@@ -34,3 +34,3 @@ const callback = jest.fn(() => done());

test('update', done => {
test('update', (done) => {
const options = { type: 'basic' };

@@ -56,3 +56,3 @@ const callback = jest.fn(() => done());

test('clear', done => {
test('clear', (done) => {
const callback = jest.fn(() => done());

@@ -71,3 +71,3 @@

test('getAll', done => {
test('getAll', (done) => {
const callback = jest.fn(() => done());

@@ -86,3 +86,3 @@

test('getPermissionLevel', done => {
test('getPermissionLevel', (done) => {
const callback = jest.fn(() => done());

@@ -89,0 +89,0 @@

@@ -20,3 +20,3 @@ beforeEach(() => {

});
test('connect.onMessage listener', done => {
test('connect.onMessage listener', (done) => {
const name = 'CONNECT_NAME';

@@ -35,3 +35,3 @@ const listener = jest.fn();

});
test('sendMessage', done => {
test('sendMessage', (done) => {
const callback = jest.fn(() => done());

@@ -45,3 +45,3 @@ expect(jest.isMockFunction(browser.runtime.sendMessage)).toBe(true);

});
test('sendMessage listener', done => {
test('sendMessage listener', (done) => {
const listener = jest.fn();

@@ -85,3 +85,3 @@ browser.runtime.onMessage.addListener(listener);

});
['addListener', 'removeListener', 'hasListener'].forEach(method => {
['addListener', 'removeListener', 'hasListener'].forEach((method) => {
test(`onConnect.${method}`, () => {

@@ -95,3 +95,3 @@ const callback = jest.fn();

});
['addListener', 'removeListener', 'hasListener'].forEach(method => {
['addListener', 'removeListener', 'hasListener'].forEach((method) => {
test(`onInstalled.${method}`, () => {

@@ -98,0 +98,0 @@ const callback = jest.fn();

describe('browser.storage', () => {
['addListener', 'removeListener', 'hasListener'].forEach(method => {
['addListener', 'removeListener', 'hasListener'].forEach((method) => {
test(`onChanged.${method}`, () => {

@@ -14,3 +14,3 @@ const callback = jest.fn();

describe('browser.storage', () => {
['sync', 'local', 'managed'].forEach(type => {
['sync', 'local', 'managed'].forEach((type) => {
describe(type, () => {

@@ -20,5 +20,5 @@ const storage = browser.storage[type];

expect(jest.isMockFunction(storage.get)).toBe(true);
test('a string key', done => {
test('a string key', (done) => {
const key = 'test';
storage.get(key, result => {
storage.get(key, (result) => {
expect(result).toBeDefined();

@@ -30,8 +30,8 @@ expect(typeof result === 'object').toBeTruthy();

});
test('an array key', done => {
test('an array key', (done) => {
const keys = ['test1', 'test2'];
storage.get(keys, result => {
storage.get(keys, (result) => {
expect(result).toBeDefined();
expect(typeof result === 'object').toBeTruthy();
keys.forEach(k => {
keys.forEach((k) => {
expect(result).toHaveProperty(k, undefined);

@@ -42,8 +42,8 @@ });

});
test('an object key', done => {
test('an object key', (done) => {
const key = { test: [] };
storage.get(key, result => {
storage.get(key, (result) => {
expect(result).toBeDefined();
expect(typeof result === 'object').toBeTruthy();
Object.keys(key).forEach(k => {
Object.keys(key).forEach((k) => {
expect(result).toHaveProperty(k);

@@ -75,3 +75,3 @@ expect(result[k]).toEqual(key[k]);

});
test('getBytesInUse', done => {
test('getBytesInUse', (done) => {
const callback = jest.fn(() => done());

@@ -86,3 +86,3 @@ expect(jest.isMockFunction(storage.getBytesInUse)).toBe(true);

});
test('set', done => {
test('set', (done) => {
const callback = jest.fn(() => done());

@@ -97,3 +97,3 @@ expect(jest.isMockFunction(storage.set)).toBe(true);

});
test('remove', done => {
test('remove', (done) => {
const callback = jest.fn(() => done());

@@ -108,3 +108,3 @@ expect(jest.isMockFunction(storage.remove)).toBe(true);

});
test('clear', done => {
test('clear', (done) => {
const callback = jest.fn(() => done());

@@ -119,3 +119,3 @@ expect(jest.isMockFunction(browser.storage.sync.clear)).toBe(true);

});
test('real scenario', done => {
test('real scenario', (done) => {
expect(jest.isMockFunction(storage.get)).toBe(true);

@@ -128,3 +128,3 @@ expect(jest.isMockFunction(storage.set)).toBe(true);

// get 'key'
storage.get(['key'], result => {
storage.get(['key'], (result) => {
expect(result).toBeDefined();

@@ -138,3 +138,3 @@ expect(typeof result === 'object').toBeTruthy();

// get all values
storage.get(null, result => {
storage.get(null, (result) => {
expect(result).toHaveProperty('key', undefined);

@@ -145,3 +145,3 @@ expect(result).toHaveProperty('foo', 'bar');

storage.clear(() => {
storage.get(['key', 'foo', 'foo2'], result => {
storage.get(['key', 'foo', 'foo2'], (result) => {
expect(result).toHaveProperty('key', undefined);

@@ -148,0 +148,0 @@ expect(result).toHaveProperty('foo', undefined);

describe('browser.tabs', () => {
test('get', done => {
test('get', (done) => {
const callback = jest.fn(() => done());

@@ -9,3 +9,3 @@ expect(jest.isMockFunction(chrome.tabs.get)).toBe(true);

});
test('getCurrent', done => {
test('getCurrent', (done) => {
const callback = jest.fn(() => done());

@@ -28,3 +28,3 @@ expect(jest.isMockFunction(chrome.tabs.getCurrent)).toBe(true);

});
test('create', done => {
test('create', (done) => {
const callback = jest.fn(() => done());

@@ -42,3 +42,3 @@ const props = { pinned: true };

});
test('duplicate', done => {
test('duplicate', (done) => {
const callback = jest.fn(() => done());

@@ -51,3 +51,3 @@ expect(jest.isMockFunction(chrome.tabs.duplicate)).toBe(true);

});
test('remove', done => {
test('remove', (done) => {
const callback = jest.fn(() => done());

@@ -62,3 +62,3 @@ expect(jest.isMockFunction(chrome.tabs.remove)).toBe(true);

});
test('query', done => {
test('query', (done) => {
const callback = jest.fn(() => done());

@@ -71,3 +71,3 @@ expect(jest.isMockFunction(chrome.tabs.query)).toBe(true);

});
test('highlight', done => {
test('highlight', (done) => {
const callback = jest.fn(() => done());

@@ -79,3 +79,3 @@ expect(jest.isMockFunction(chrome.tabs.highlight)).toBe(true);

});
test('update', done => {
test('update', (done) => {
const callback = jest.fn(() => done());

@@ -91,3 +91,3 @@ const props = { pinned: true };

});
test('move', done => {
test('move', (done) => {
const callback = jest.fn(() => done());

@@ -105,3 +105,3 @@ const props = { pinned: true };

});
['addListener', 'removeListener', 'hasListener'].forEach(method => {
['addListener', 'removeListener', 'hasListener'].forEach((method) => {
test(`onUpdated.${method}`, () => {

@@ -124,2 +124,20 @@ const callback = jest.fn();

});
test('sendMessage', (done) => {
const callback = jest.fn(() => done());
expect(jest.isMockFunction(chrome.tabs.sendMessage)).toBe(true);
chrome.tabs.sendMessage(1, { test: 'message' }, callback);
expect(chrome.tabs.sendMessage).toHaveBeenCalledTimes(1);
expect(callback).toHaveBeenCalledTimes(1);
chrome.tabs.sendMessage(1, { test: 'message' });
expect(chrome.tabs.sendMessage).toHaveBeenCalledTimes(2);
});
test('sendMessage listener', (done) => {
const listener = jest.fn();
browser.runtime.onMessage.addListener(listener);
chrome.tabs.sendMessage(1, { test: 'message' }, done);
expect(listener).toHaveBeenCalledWith(1, { test: 'message' });
});
test('sendMessage promise', () => {
return expect(chrome.tabs.sendMessage({})).resolves.toBeUndefined();
});
});
{
"name": "jest-webextension-mock",
"version": "3.6.1",
"description": "Mock the components of a WebExtension",
"main": "dist/setup.js",
"module": "src/setup.js",
"author": "Bryan Clark <clarkbw@gmail.com> (https://twitter.com/clarkbw)",
"license": "ISC",
"scripts": {
"test": "jest",
"build": "rollup -c",
"prettier": "prettier --write \"{config,src,__{tests,setups}__}/**/*.js\" rollup.config.js",
"eslint-check": "eslint --print-config .eslintrc.js | eslint-config-prettier-check"
},
"devDependencies": {
"@babel/core": "^7.9.0",
"@babel/preset-env": "^7.9.5",
"babel-core": "^7.0.0-bridge.0",
"babel-jest": "^25.4.0",
"eslint": "^6.8.0",
"eslint-config-prettier": "^6.11.0",
"eslint-plugin-prettier": "^3.1.3",
"jest": "^25.4.0",
"prettier": "^2.0.5",
"rollup": "^2.7.3",
"rollup-plugin-babel": "^4.4.0",
"rollup-plugin-node-resolve": "^5.2.0",
"rollup-watch": "^4.0.0"
},
"jest": {
"bail": true,
"coverageDirectory": "./coverage/",
"coverageReporters": [
"json",
"lcov",
"text",
"html"
],
"collectCoverage": true,
"setupFiles": [
"./__setups__/chrome.js"
]
}
"name": "jest-webextension-mock",
"version": "3.7.0",
"description": "Mock the components of a WebExtension",
"main": "dist/setup.js",
"module": "src/setup.js",
"author": "Bryan Clark <clarkbw@gmail.com> (https://twitter.com/clarkbw)",
"license": "ISC",
"scripts": {
"test": "jest",
"build": "rollup -c",
"prettier": "prettier --write \"{config,src,__{tests,setups}__}/**/*.js\" rollup.config.js",
"eslint-check": "eslint --print-config .eslintrc.js | eslint-config-prettier-check"
},
"devDependencies": {
"@babel/core": "^7.11.6",
"@babel/preset-env": "^7.11.5",
"babel-core": "^7.0.0-bridge.0",
"babel-jest": "^26.5.2",
"eslint": "^7.11.0",
"eslint-config-prettier": "^6.12.0",
"eslint-plugin-prettier": "^3.1.4",
"jest": "^26.5.3",
"prettier": "^2.1.2",
"rollup": "^2.30.0",
"rollup-plugin-babel": "^4.4.0",
"rollup-plugin-node-resolve": "^5.2.0",
"rollup-watch": "^4.0.0"
},
"jest": {
"bail": true,
"coverageDirectory": "./coverage/",
"coverageReporters": [
"json",
"lcov",
"text",
"html"
],
"collectCoverage": true,
"setupFiles": [
"./__setups__/chrome.js"
]
}
}
// https://developer.chrome.com/extensions/commands
export const commands = {
getAll: jest.fn(cb => {
getAll: jest.fn((cb) => {
if (cb !== undefined) {

@@ -6,0 +6,0 @@ return cb();

export const i18n = {
getAcceptLanguages: jest.fn(),
getMessage: jest.fn(key => `Translated<${key}>`),
getMessage: jest.fn((key) => `Translated<${key}>`),
getUILanguage: jest.fn(() => 'en'),
detectLanguage: jest.fn(),
};

@@ -25,4 +25,4 @@ const cbOrPromise = (cb, value) => {

clear: jest.fn((notificationId, cb) => cbOrPromise(cb, true)),
getAll: jest.fn(cb => cbOrPromise(cb, [])),
getPermissionLevel: jest.fn(cb => cbOrPromise(cb, 'granted')),
getAll: jest.fn((cb) => cbOrPromise(cb, [])),
getPermissionLevel: jest.fn((cb) => cbOrPromise(cb, 'granted')),
onClosed: {

@@ -29,0 +29,0 @@ addListener: jest.fn(),

@@ -1,4 +0,4 @@

let onMessageListeners = [];
export let onMessageListeners = [];
export const runtime = {
connect: jest.fn(function({ name }) {
connect: jest.fn(function ({ name }) {
return {

@@ -11,3 +11,3 @@ name,

onMessage: {
addListener: jest.fn(listener => {
addListener: jest.fn((listener) => {
onMessageListeners.push(listener);

@@ -20,3 +20,3 @@ }),

sendMessage: jest.fn((message, cb) => {
onMessageListeners.forEach(listener => listener(message));
onMessageListeners.forEach((listener) => listener(message));
if (cb !== undefined) {

@@ -28,9 +28,11 @@ return cb();

onMessage: {
addListener: jest.fn(listener => {
addListener: jest.fn((listener) => {
onMessageListeners.push(listener);
}),
removeListener: jest.fn(listener => {
onMessageListeners = onMessageListeners.filter(lstn => lstn !== listener);
removeListener: jest.fn((listener) => {
onMessageListeners = onMessageListeners.filter(
(lstn) => lstn !== listener
);
}),
hasListener: jest.fn(listener => onMessageListeners.includes(listener)),
hasListener: jest.fn((listener) => onMessageListeners.includes(listener)),
},

@@ -47,3 +49,3 @@ onConnect: {

},
getURL: jest.fn(function(path) {
getURL: jest.fn(function (path) {
return path;

@@ -50,0 +52,0 @@ }),

@@ -15,5 +15,5 @@ /**

// https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts#exportFunction
global.exportFunction = jest.fn(func => func);
global.exportFunction = jest.fn((func) => func);
// https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts#cloneInto
global.cloneInto = jest.fn(obj => obj);
global.cloneInto = jest.fn((obj) => obj);
// }

@@ -38,3 +38,3 @@ let store = {};

set: jest.fn((payload, cb) => {
Object.keys(payload).forEach(key => (store[key] = payload[key]));
Object.keys(payload).forEach((key) => (store[key] = payload[key]));
if (cb !== undefined) {

@@ -47,3 +47,3 @@ return cb();

const keys = typeof id === 'string' ? [id] : id;
keys.forEach(key => delete store[key]);
keys.forEach((key) => delete store[key]);
if (cb !== undefined) {

@@ -54,3 +54,3 @@ return cb();

}),
clear: jest.fn(cb => {
clear: jest.fn((cb) => {
store = {};

@@ -78,3 +78,3 @@ if (cb !== undefined) {

set: jest.fn((payload, cb) => {
Object.keys(payload).forEach(key => (store[key] = payload[key]));
Object.keys(payload).forEach((key) => (store[key] = payload[key]));
if (cb !== undefined) {

@@ -87,3 +87,3 @@ return cb();

const keys = typeof id === 'string' ? [id] : id;
keys.forEach(key => delete store[key]);
keys.forEach((key) => delete store[key]);
if (cb !== undefined) {

@@ -94,3 +94,3 @@ return cb();

}),
clear: jest.fn(cb => {
clear: jest.fn((cb) => {
store = {};

@@ -118,3 +118,3 @@ if (cb !== undefined) {

set: jest.fn((payload, cb) => {
Object.keys(payload).forEach(key => (store[key] = payload[key]));
Object.keys(payload).forEach((key) => (store[key] = payload[key]));
if (cb !== undefined) {

@@ -127,3 +127,3 @@ return cb();

const keys = typeof id === 'string' ? [id] : id;
keys.forEach(key => delete store[key]);
keys.forEach((key) => delete store[key]);
if (cb !== undefined) {

@@ -134,3 +134,3 @@ return cb();

}),
clear: jest.fn(cb => {
clear: jest.fn((cb) => {
store = {};

@@ -137,0 +137,0 @@ if (cb !== undefined) {

// https://developer.chrome.com/extensions/tabs
import { onMessageListeners } from './runtime';
export const tabs = {
get: jest.fn((id = '', cb = () => {}) => cb({})),
getCurrent: jest.fn(cb => cb({})),
getCurrent: jest.fn((cb) => cb({})),
connect: jest.fn((id = '', info = {}) => {

@@ -40,3 +41,3 @@ // returns a Port

move: jest.fn((ids = [], props = {}, cb = () => {}) =>
cb(ids.map(id => Object.assign({}, props, { id })))
cb(ids.map((id) => Object.assign({}, props, { id })))
),

@@ -48,4 +49,10 @@ onUpdated: {

},
sendMessage: jest.fn(),
sendMessage: jest.fn((tabId, message, cb) => {
onMessageListeners.forEach((listener) => listener(tabId, message));
if (cb !== undefined) {
return cb();
}
return Promise.resolve();
}),
reload: jest.fn((tabId, reloadProperties, cb) => cb()),
};
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc