jest-webextension-mock
Advanced tools
Comparing version 2.1.0 to 3.0.0
@@ -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 @@ }); |
@@ -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
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
174545
1082
0
14
115