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 2.1.0 to 3.0.0

.circleci/config.yml

1

__tests__/runtime.test.js

@@ -9,2 +9,3 @@ describe('browser.runtime', () => {

expect(jest.isMockFunction(connection.onDisconnect.addListener)).toBe(true);
expect(jest.isMockFunction(connection.onMessage.addListener)).toBe(true);
expect(browser.runtime.connect).toHaveBeenCalledTimes(1);

@@ -11,0 +12,0 @@ });

67

__tests__/storage.test.js

@@ -17,11 +17,52 @@ describe('browser.storage', () => {

const storage = browser.storage[type];
test('get', done => {
const callback = jest.fn(() => done());
describe('get', () => {
expect(jest.isMockFunction(storage.get)).toBe(true);
storage.get(1, callback);
expect(storage.get).toHaveBeenCalledTimes(1);
expect(callback).toBeCalled();
test('a string key', done => {
const key = 'test';
storage.get(key, result => {
expect(result).toBeDefined();
expect(typeof result === 'object').toBeTruthy();
expect(result).toHaveProperty(key, '');
done();
});
});
test('an array key', done => {
const keys = ['test1', 'test2'];
storage.get(keys, result => {
expect(result).toBeDefined();
expect(typeof result === 'object').toBeTruthy();
keys.forEach(k => {
expect(result).toHaveProperty(k);
});
done();
});
});
test('an object key', done => {
const key = { test: [] };
storage.get(key, result => {
expect(result).toBeDefined();
expect(typeof result === 'object').toBeTruthy();
Object.keys(key).forEach(k => {
expect(result).toHaveProperty(k);
expect(result[k]).toEqual(key[k]);
});
done();
});
});
test('a invalid key', () => {
try {
storage.get(1, jest.fn());
expect.toThrow;
} catch (e) {
expect(e.message).toBe('Wrong key given');
}
});
afterEach(() => {
expect(storage.get).toHaveBeenCalledTimes(1);
storage.get.mockClear();
});
});
test('get promise', () => {
return expect(storage.get(1)).resolves.toMatchObject({ id: 1 });
const key = 'key';
return expect(storage.get(key)).resolves.toEqual({ key: '' });
});

@@ -31,3 +72,3 @@ test('getBytesInUse', done => {

expect(jest.isMockFunction(storage.getBytesInUse)).toBe(true);
storage.getBytesInUse(1, callback);
storage.getBytesInUse('key', callback);
expect(storage.getBytesInUse).toHaveBeenCalledTimes(1);

@@ -37,5 +78,3 @@ expect(callback).toBeCalled();

test('getBytesInUse promise', () => {
return expect(storage.getBytesInUse(1)).resolves.toMatchObject({
id: 1,
});
return expect(storage.getBytesInUse('key')).resolves.toBe(0);
});

@@ -45,3 +84,3 @@ test('set', done => {

expect(jest.isMockFunction(storage.set)).toBe(true);
storage.set(1, callback);
storage.set({ key: '' }, callback);
expect(storage.set).toHaveBeenCalledTimes(1);

@@ -51,3 +90,3 @@ expect(callback).toBeCalled();

test('set promise', () => {
return expect(storage.set(1)).resolves.toMatchObject({ id: 1 });
return expect(storage.set(1)).resolves.toBeUndefined();
});

@@ -57,3 +96,3 @@ test('remove', done => {

expect(jest.isMockFunction(storage.remove)).toBe(true);
storage.remove(1, callback);
storage.remove('key', callback);
expect(storage.remove).toHaveBeenCalledTimes(1);

@@ -63,3 +102,3 @@ expect(callback).toBeCalled();

test('remove promise', () => {
return expect(storage.remove(1)).resolves.toMatchObject({ id: 1 });
return expect(storage.remove(1)).resolves.toBeUndefined();
});

@@ -66,0 +105,0 @@ test('clear', done => {

@@ -25,3 +25,2 @@ 'use strict';

get: jest.fn(function () {
var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var cb = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};

@@ -34,3 +33,2 @@ return cb({});

connect: jest.fn(function () {
var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var info = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};

@@ -49,2 +47,3 @@

postMessage: jest.fn()
// TODO: add sender
};

@@ -67,3 +66,2 @@ }),

query: jest.fn(function () {
var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var cb = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};

@@ -73,3 +71,2 @@ return cb([{}]);

highlight: jest.fn(function () {
var info = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var cb = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};

@@ -103,2 +100,5 @@ return cb();

addListener: jest.fn()
},
onMessage: {
addListener: jest.fn()
}

@@ -122,27 +122,50 @@ };

var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
return typeof obj;
} : function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
function resolveKey(key) {
if (typeof key === 'string') {
var result = {};
result[key] = '';
return result;
} else if (Array.isArray(key)) {
return key.reduce(function (acc, curr) {
acc[curr] = '';
return acc;
}, {});
} else if ((typeof key === 'undefined' ? 'undefined' : _typeof(key)) === 'object') {
return key;
}
throw new Error('Wrong key given');
}
var storage = {
sync: {
get: jest.fn(function (id, cb) {
var result = resolveKey(id);
if (cb !== undefined) {
return cb({ id: id });
return cb(result);
}
return Promise.resolve({ id: id });
return Promise.resolve(result);
}),
getBytesInUse: jest.fn(function (id, cb) {
if (cb !== undefined) {
return cb({ id: id });
return cb(0);
}
return Promise.resolve({ id: id });
return Promise.resolve(0);
}),
set: jest.fn(function (id, cb) {
if (cb !== undefined) {
return cb({ id: id });
return cb();
}
return Promise.resolve({ id: id });
return Promise.resolve();
}),
remove: jest.fn(function (id, cb) {
if (cb !== undefined) {
return cb({ id: id });
return cb();
}
return Promise.resolve({ id: id });
return Promise.resolve();
}),

@@ -158,24 +181,25 @@ clear: jest.fn(function (cb) {

get: jest.fn(function (id, cb) {
var result = resolveKey(id);
if (cb !== undefined) {
return cb({ id: id });
return cb(result);
}
return Promise.resolve({ id: id });
return Promise.resolve(result);
}),
getBytesInUse: jest.fn(function (id, cb) {
if (cb !== undefined) {
return cb({ id: id });
return cb(0);
}
return Promise.resolve({ id: id });
return Promise.resolve(0);
}),
set: jest.fn(function (id, cb) {
if (cb !== undefined) {
return cb({ id: id });
return cb();
}
return Promise.resolve({ id: id });
return Promise.resolve();
}),
remove: jest.fn(function (id, cb) {
if (cb !== undefined) {
return cb({ id: id });
return cb();
}
return Promise.resolve({ id: id });
return Promise.resolve();
}),

@@ -191,24 +215,25 @@ clear: jest.fn(function (cb) {

get: jest.fn(function (id, cb) {
var result = resolveKey(id);
if (cb !== undefined) {
return cb({ id: id });
return cb(result);
}
return Promise.resolve({ id: id });
return Promise.resolve(result);
}),
getBytesInUse: jest.fn(function (id, cb) {
if (cb !== undefined) {
return cb({ id: id });
return cb(0);
}
return Promise.resolve({ id: id });
return Promise.resolve(0);
}),
set: jest.fn(function (id, cb) {
if (cb !== undefined) {
return cb({ id: id });
return cb();
}
return Promise.resolve({ id: id });
return Promise.resolve();
}),
remove: jest.fn(function (id, cb) {
if (cb !== undefined) {
return cb({ id: id });
return cb();
}
return Promise.resolve({ id: id });
return Promise.resolve();
}),

@@ -291,2 +316,3 @@ clear: jest.fn(function (cb) {

// Firefox specific API
var chrome = {

@@ -293,0 +319,0 @@ omnibox: omnibox,

{
"name": "jest-webextension-mock",
"version": "2.1.0",
"version": "3.0.0",
"description": "Mock the components of a WebExtension",

@@ -16,13 +16,14 @@ "main": "dist/setup.js",

"devDependencies": {
"babel-jest": "^20.0.1",
"babel-core": "^6.26.0",
"babel-jest": "^22.0.0",
"babel-plugin-external-helpers": "^6.22.0",
"babel-preset-env": "^1.4.0",
"babel-preset-latest": "^6.24.1",
"eslint": "^3.19.0",
"eslint": "^4.1.0",
"eslint-config-prettier": "^2.0.0",
"eslint-plugin-prettier": "^2.0.1",
"jest": "^20.0.2",
"jest": "^22.0.0",
"prettier": "^1.3.1",
"rollup": "^0.42.0",
"rollup-plugin-babel": "^2.7.1",
"rollup": "^0.52.0",
"rollup-plugin-babel": "^3.0.0",
"rollup-plugin-node-resolve": "^3.0.0",

@@ -29,0 +30,0 @@ "rollup-watch": "^4.0.0"

@@ -105,10 +105,2 @@ [![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)

## Pull Request
Before every PR run the following:
```
yarn run prettier
```
## Publish

@@ -119,5 +111,6 @@

```
yarn run build
yarn run prettier
yarn run build
yarn publish
npm version `${version}`
npm publish
```

@@ -5,4 +5,3 @@ import resolve from 'rollup-plugin-node-resolve';

export default {
entry: 'src/setup.js',
format: 'cjs',
input: 'src/setup.js',
plugins: [

@@ -17,3 +16,6 @@ resolve(),

],
dest: 'dist/setup.js',
output: {
format: 'cjs',
file: 'dist/setup.js',
},
};

@@ -9,2 +9,5 @@ export const runtime = {

},
onMessage: {
addListener: jest.fn(),
},
};

@@ -11,0 +14,0 @@ return connection;

@@ -0,26 +1,43 @@

function resolveKey(key) {
if (typeof key === 'string') {
const result = {};
result[key] = '';
return result;
} else if (Array.isArray(key)) {
return key.reduce((acc, curr) => {
acc[curr] = '';
return acc;
}, {});
} else if (typeof key === 'object') {
return key;
}
throw new Error('Wrong key given');
}
export const storage = {
sync: {
get: jest.fn((id, cb) => {
const result = resolveKey(id);
if (cb !== undefined) {
return cb({ id });
return cb(result);
}
return Promise.resolve({ id });
return Promise.resolve(result);
}),
getBytesInUse: jest.fn((id, cb) => {
if (cb !== undefined) {
return cb({ id });
return cb(0);
}
return Promise.resolve({ id });
return Promise.resolve(0);
}),
set: jest.fn((id, cb) => {
if (cb !== undefined) {
return cb({ id });
return cb();
}
return Promise.resolve({ id });
return Promise.resolve();
}),
remove: jest.fn((id, cb) => {
if (cb !== undefined) {
return cb({ id });
return cb();
}
return Promise.resolve({ id });
return Promise.resolve();
}),

@@ -36,24 +53,25 @@ clear: jest.fn(cb => {

get: jest.fn((id, cb) => {
const result = resolveKey(id);
if (cb !== undefined) {
return cb({ id });
return cb(result);
}
return Promise.resolve({ id });
return Promise.resolve(result);
}),
getBytesInUse: jest.fn((id, cb) => {
if (cb !== undefined) {
return cb({ id });
return cb(0);
}
return Promise.resolve({ id });
return Promise.resolve(0);
}),
set: jest.fn((id, cb) => {
if (cb !== undefined) {
return cb({ id });
return cb();
}
return Promise.resolve({ id });
return Promise.resolve();
}),
remove: jest.fn((id, cb) => {
if (cb !== undefined) {
return cb({ id });
return cb();
}
return Promise.resolve({ id });
return Promise.resolve();
}),

@@ -69,24 +87,25 @@ clear: jest.fn(cb => {

get: jest.fn((id, cb) => {
const result = resolveKey(id);
if (cb !== undefined) {
return cb({ id });
return cb(result);
}
return Promise.resolve({ id });
return Promise.resolve(result);
}),
getBytesInUse: jest.fn((id, cb) => {
if (cb !== undefined) {
return cb({ id });
return cb(0);
}
return Promise.resolve({ id });
return Promise.resolve(0);
}),
set: jest.fn((id, cb) => {
if (cb !== undefined) {
return cb({ id });
return cb();
}
return Promise.resolve({ id });
return Promise.resolve();
}),
remove: jest.fn((id, cb) => {
if (cb !== undefined) {
return cb({ id });
return cb();
}
return Promise.resolve({ id });
return Promise.resolve();
}),

@@ -93,0 +112,0 @@ clear: jest.fn(cb => {

Sorry, the diff of this file is not supported yet

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