setup mock browser object
This commit is contained in:
19
__mocks__/webextension-polyfill-ts/index.ts
Normal file
19
__mocks__/webextension-polyfill-ts/index.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
class BrowserMock {
|
||||
runtime = {
|
||||
getBackgroundPage() {
|
||||
return 'https://background-page.html';
|
||||
},
|
||||
getManifest() {
|
||||
return {
|
||||
version: 'test-version',
|
||||
};
|
||||
},
|
||||
openOptionsPage() {
|
||||
return 'https://options-page.html';
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export const browser = new BrowserMock();
|
||||
|
||||
export default { browser };
|
||||
@@ -32,7 +32,7 @@ export default {
|
||||
|
||||
// Indicates which provider should be used to instrument code for coverage
|
||||
coverageProvider: 'v8',
|
||||
|
||||
preset: 'ts-jest',
|
||||
// A list of reporter names that Jest uses when writing coverage reports
|
||||
// coverageReporters: [
|
||||
// "json",
|
||||
|
||||
218
package-lock.json
generated
218
package-lock.json
generated
@@ -9295,6 +9295,15 @@
|
||||
"electron-to-chromium": "^1.2.7"
|
||||
}
|
||||
},
|
||||
"bs-logger": {
|
||||
"version": "0.2.6",
|
||||
"resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
|
||||
"integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fast-json-stable-stringify": "2.x"
|
||||
}
|
||||
},
|
||||
"bser": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
|
||||
@@ -20556,6 +20565,18 @@
|
||||
"traceur-runner": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"mockzilla": {
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/mockzilla/-/mockzilla-0.9.0.tgz",
|
||||
"integrity": "sha512-JkVFqrdep3JtaqKh1QC5pV3KzjXtoJp5T32IsuPeZ3kMUcixm/4np3ytNd5OV/QjWn/VsSrd4Ti3dFgVLl9+2A==",
|
||||
"dev": true
|
||||
},
|
||||
"mockzilla-webextension": {
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/mockzilla-webextension/-/mockzilla-webextension-0.9.0.tgz",
|
||||
"integrity": "sha512-G4VVxJ0fbdN9eBy6n8CxmyyWc5VC7k7zTUYeghshkUDdsAdr6Tos4T2349Qangl4wu6oRZ9AO6ShozBoXXwY4A==",
|
||||
"dev": true
|
||||
},
|
||||
"modify-filename": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz",
|
||||
@@ -25619,6 +25640,199 @@
|
||||
"glob": "^7.1.2"
|
||||
}
|
||||
},
|
||||
"ts-jest": {
|
||||
"version": "26.4.4",
|
||||
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.4.4.tgz",
|
||||
"integrity": "sha512-3lFWKbLxJm34QxyVNNCgXX1u4o/RV0myvA2y2Bxm46iGIjKlaY0own9gIckbjZJPn+WaJEnfPPJ20HHGpoq4yg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/jest": "26.x",
|
||||
"bs-logger": "0.x",
|
||||
"buffer-from": "1.x",
|
||||
"fast-json-stable-stringify": "2.x",
|
||||
"jest-util": "^26.1.0",
|
||||
"json5": "2.x",
|
||||
"lodash.memoize": "4.x",
|
||||
"make-error": "1.x",
|
||||
"mkdirp": "1.x",
|
||||
"semver": "7.x",
|
||||
"yargs-parser": "20.x"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"braces": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fill-range": "^7.0.1"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
|
||||
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"ci-info": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
|
||||
"integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
|
||||
"dev": true
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-name": "~1.1.4"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
||||
"dev": true
|
||||
},
|
||||
"fill-range": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||
"dev": true
|
||||
},
|
||||
"is-ci": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
|
||||
"integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ci-info": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||
"dev": true
|
||||
},
|
||||
"jest-util": {
|
||||
"version": "26.6.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz",
|
||||
"integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jest/types": "^26.6.2",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.0.0",
|
||||
"graceful-fs": "^4.2.4",
|
||||
"is-ci": "^2.0.0",
|
||||
"micromatch": "^4.0.2"
|
||||
}
|
||||
},
|
||||
"json5": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
|
||||
"integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"minimist": "^1.2.5"
|
||||
}
|
||||
},
|
||||
"lodash.memoize": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
||||
"integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
|
||||
"dev": true
|
||||
},
|
||||
"lru-cache": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"yallist": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"micromatch": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
|
||||
"integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"braces": "^3.0.1",
|
||||
"picomatch": "^2.0.5"
|
||||
}
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
|
||||
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
|
||||
"dev": true
|
||||
},
|
||||
"semver": {
|
||||
"version": "7.3.4",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
|
||||
"integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lru-cache": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-number": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"yallist": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
||||
"dev": true
|
||||
},
|
||||
"yargs-parser": {
|
||||
"version": "20.2.4",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
|
||||
"integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"ts-loader": {
|
||||
"version": "8.0.14",
|
||||
"resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.14.tgz",
|
||||
@@ -26717,7 +26931,6 @@
|
||||
"version": "0.22.0",
|
||||
"resolved": "https://registry.npmjs.org/webextension-polyfill-ts/-/webextension-polyfill-ts-0.22.0.tgz",
|
||||
"integrity": "sha512-3P33ClMwZ/qiAT7UH1ROrkRC1KM78umlnPpRhdC/292UyoTTW9NcjJEqDsv83HbibcTB6qCtpVeuB2q2/oniHQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"webextension-polyfill": "^0.7.0"
|
||||
},
|
||||
@@ -26725,8 +26938,7 @@
|
||||
"webextension-polyfill": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/webextension-polyfill/-/webextension-polyfill-0.7.0.tgz",
|
||||
"integrity": "sha512-su48BkMLxqzTTvPSE1eWxKToPS2Tv5DLGxKexLEVpwFd6Po6N8hhSLIvG6acPAg7qERoEaDL+Y5HQJeJeml5Aw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-su48BkMLxqzTTvPSE1eWxKToPS2Tv5DLGxKexLEVpwFd6Po6N8hhSLIvG6acPAg7qERoEaDL+Y5HQJeJeml5Aw=="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -77,6 +77,8 @@
|
||||
"mocha": "^5.0.0",
|
||||
"mocha-sinon": "^2.0.0",
|
||||
"mocha-traceur": "^2.1.0",
|
||||
"mockzilla": "^0.9.0",
|
||||
"mockzilla-webextension": "^0.9.0",
|
||||
"phantomjs": "^2.1.7",
|
||||
"popper.js": "^1.14.6",
|
||||
"prettier": "^2.2.1",
|
||||
@@ -88,6 +90,7 @@
|
||||
"sinon-chai": "^2.8.0",
|
||||
"sinon-chrome": "^2.2.4",
|
||||
"traceur": "^0.0.111",
|
||||
"ts-jest": "^26.4.4",
|
||||
"ts-loader": "^8.0.14",
|
||||
"ts-node": "^9.1.1",
|
||||
"typescript": "^4.1.3",
|
||||
|
||||
51
src/config.test.ts
Normal file
51
src/config.test.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
import config from './config';
|
||||
|
||||
describe('wakatime config', () => {
|
||||
it('snapshot of config', () => {
|
||||
expect(config).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"alert": Object {
|
||||
"failure": Object {
|
||||
"text": "There was an error while saving the options!",
|
||||
"type": "danger",
|
||||
},
|
||||
"success": Object {
|
||||
"text": "Options have been saved!",
|
||||
"type": "success",
|
||||
},
|
||||
},
|
||||
"colors": Object {
|
||||
"allGood": "",
|
||||
"lightTheme": "white",
|
||||
"notLogging": "gray",
|
||||
"notSignedIn": "red",
|
||||
},
|
||||
"currentUserApiUrl": "https://wakatime.com/api/v1/users/current",
|
||||
"detectionIntervalInSeconds": 60,
|
||||
"heartbeatApiUrl": "https://wakatime.com/api/v1/users/current/heartbeats",
|
||||
"loggingEnabled": true,
|
||||
"loggingStyle": "blacklist",
|
||||
"loggingType": "domain",
|
||||
"logoutUserUrl": "https://wakatime.com/logout",
|
||||
"name": "WakaTime",
|
||||
"states": Array [
|
||||
"allGood",
|
||||
"notLogging",
|
||||
"notSignedIn",
|
||||
"blacklisted",
|
||||
"whitelisted",
|
||||
],
|
||||
"summariesApiUrl": "https://wakatime.com/api/v1/users/current/summaries",
|
||||
"theme": "light",
|
||||
"tooltips": Object {
|
||||
"allGood": "",
|
||||
"blacklisted": "This URL is blacklisted",
|
||||
"notLogging": "Not logging",
|
||||
"notSignedIn": "Not signed In",
|
||||
"whitelisted": "This URL is not on your whitelist",
|
||||
},
|
||||
"version": "test-version",
|
||||
}
|
||||
`);
|
||||
});
|
||||
});
|
||||
@@ -113,11 +113,13 @@ const config: Config = {
|
||||
notSignedIn: 'red',
|
||||
},
|
||||
|
||||
currentUserApiUrl: 'https://wakatime.com/api/v1/users/current',
|
||||
currentUserApiUrl:
|
||||
process.env.CURRENT_USER_API_URL ?? 'https://wakatime.com/api/v1/users/current',
|
||||
|
||||
detectionIntervalInSeconds: 60,
|
||||
|
||||
heartbeatApiUrl: 'https://wakatime.com/api/v1/users/current/heartbeats',
|
||||
heartbeatApiUrl:
|
||||
process.env.HEART_BEAT_API_URL ?? 'https://wakatime.com/api/v1/users/current/heartbeats',
|
||||
|
||||
loggingEnabled: true,
|
||||
|
||||
@@ -125,13 +127,14 @@ const config: Config = {
|
||||
|
||||
loggingType: 'domain',
|
||||
|
||||
logoutUserUrl: 'https://wakatime.com/logout',
|
||||
logoutUserUrl: process.env.LOGOUT_USER_URL ?? 'https://wakatime.com/logout',
|
||||
|
||||
name: 'WakaTime',
|
||||
|
||||
states: ['allGood', 'notLogging', 'notSignedIn', 'blacklisted', 'whitelisted'],
|
||||
|
||||
summariesApiUrl: 'https://wakatime.com/api/v1/users/current/summaries',
|
||||
summariesApiUrl:
|
||||
process.env.SUMMARIES_API_URL ?? 'https://wakatime.com/api/v1/users/current/summaries',
|
||||
|
||||
theme: 'light',
|
||||
|
||||
|
||||
6
src/jest.config.ts
Normal file
6
src/jest.config.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import jestConfig from '../jest.config';
|
||||
|
||||
export default {
|
||||
...jestConfig,
|
||||
testEnvironment: 'node',
|
||||
};
|
||||
@@ -15,5 +15,5 @@
|
||||
"baseUrl": "./",
|
||||
"paths": {}
|
||||
},
|
||||
"exclude": ["**/lib/", "**/*.test.ts"]
|
||||
"exclude": []
|
||||
}
|
||||
|
||||
1
xclap.ts
1
xclap.ts
@@ -39,6 +39,7 @@ load({
|
||||
prettier: [exec('prettier --write .')],
|
||||
test: ['build', 'lint', 'test-jest', 'test-js'],
|
||||
'test-jest': [exec('jest --clearCache'), exec('jest --verbose --coverage')],
|
||||
'test-jest-update': exec('jest -u'),
|
||||
'test-js': 'phantomjs tests/run.js',
|
||||
webpack: [exec('webpack --mode production')],
|
||||
'webpack:dev': [exec('webpack --mode development')],
|
||||
|
||||
Reference in New Issue
Block a user