Skip to content

Commit c30ae86

Browse files
committed
test: added jest and some tests
1 parent 270544f commit c30ae86

File tree

6 files changed

+1712
-20
lines changed

6 files changed

+1712
-20
lines changed

.eslintrc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ module.exports = {
33
commonjs: true,
44
es2021: true,
55
node: true,
6+
jest: true,
67
},
78
extends: ['airbnb-base', 'prettier'],
89
overrides: [],

.husky/pre-commit

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
. "$(dirname -- "$0")/_/husky.sh"
33

44
yarn lint-staged
5+
CI=true yarn run test

__tests__/index.spec.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
const mockeData = require('./utils');
2+
const Master = require('../index');
3+
4+
process.env.transferEncryptToken = '00000000000000000000000000000000';
5+
process.env.token = 'demoCHannel0';
6+
process.env.LOG_LEVEL = 'off';
7+
8+
let master;
9+
beforeEach(() => {
10+
master = new Master();
11+
});
12+
13+
describe('pushNewJob method', () => {
14+
it('Reject push job if not pass payload', async () => {
15+
await master.pushNewJob().catch((e) => {
16+
expect(e.message).toBe('payload is undefined');
17+
});
18+
});
19+
it('Push job succesfully and enrcypted , if job is object', async () => {
20+
const encryptedPayload = master.crypt.encrypt(
21+
JSON.stringify(mockeData.payloadObject)
22+
);
23+
await master.pushNewJob(mockeData.payloadObject);
24+
25+
expect(encryptedPayload).toHaveProperty('iv');
26+
expect(encryptedPayload).toHaveProperty('encryptedData');
27+
expect(master.jobs).toHaveLength(1);
28+
expect(JSON.parse(master.jobs[0])).toEqual(encryptedPayload);
29+
});
30+
it('Push job succesfully and enrcypted , if job is array', async () => {
31+
const encryptedPayload = master.crypt.encrypt(
32+
JSON.stringify(mockeData.payloadArray)
33+
);
34+
await master.pushNewJob(mockeData.payloadArray);
35+
36+
expect(encryptedPayload).toHaveProperty('iv');
37+
expect(encryptedPayload).toHaveProperty('encryptedData');
38+
expect(master.jobs).toHaveLength(1);
39+
expect(JSON.parse(master.jobs[0])).toEqual(encryptedPayload);
40+
});
41+
it('Push job succesfully and enrcypted , if job is string', async () => {
42+
const jobData = '50';
43+
const encryptedPayload = master.crypt.encrypt(jobData);
44+
await master.pushNewJob(jobData);
45+
46+
expect(encryptedPayload).toHaveProperty('iv');
47+
expect(encryptedPayload).toHaveProperty('encryptedData');
48+
expect(master.jobs).toHaveLength(1);
49+
expect(JSON.parse(master.jobs[0])).toEqual(encryptedPayload);
50+
});
51+
it('Push job succesfully and enrcypted , if job is number', async () => {
52+
const jobData = 50;
53+
const encryptedPayload = master.crypt.encrypt(jobData);
54+
await master.pushNewJob(jobData);
55+
56+
expect(encryptedPayload).toHaveProperty('iv');
57+
expect(encryptedPayload).toHaveProperty('encryptedData');
58+
expect(master.jobs).toHaveLength(1);
59+
expect(JSON.parse(master.jobs[0])).toEqual(encryptedPayload);
60+
});
61+
});

__tests__/utils.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module.exports = {
2+
payloadObject: {
3+
a: 1,
4+
b: 2,
5+
},
6+
payloadArray: [
7+
{ a: 1, b: 2 },
8+
{ a: 10, b: 20 },
9+
],
10+
};

package.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"description": "Master queue, push jobs and gathers results from online workers.",
55
"main": "index.js",
66
"scripts": {
7-
"test": "echo \"Error: no test specified\" && exit 1",
7+
"test": "jest --forceExit",
8+
"test:dev": "jest --watch ",
89
"lint": "eslint --ext .js,.ts .",
910
"format": "prettier --write .",
1011
"prepare": "husky install"
@@ -23,11 +24,13 @@
2324
"prompts": "^2.4.1"
2425
},
2526
"devDependencies": {
27+
"@types/jest": "^29.0.3",
2628
"cz-conventional-changelog": "^3.3.0",
2729
"eslint-config-airbnb-base": "^15.0.0",
2830
"eslint-config-prettier": "^8.5.0",
2931
"eslint-plugin-import": "^2.25.2",
3032
"husky": "^8.0.1",
33+
"jest": "^29.0.3",
3134
"lint-staged": "^13.0.3",
3235
"prettier": "2.7.1"
3336
},
@@ -40,5 +43,10 @@
4043
"hooks": {
4144
"prepare-commit-msg": "exec < /dev/tty && npx cz --hook || true"
4245
}
46+
},
47+
"jest": {
48+
"modulePathIgnorePatterns": [
49+
"utils"
50+
]
4351
}
4452
}

0 commit comments

Comments
 (0)