/
prefer-alphabetical-dependencies.test.js
executable file
·92 lines (76 loc) · 3.1 KB
/
prefer-alphabetical-dependencies.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
const ruleModule = require('./../../../src/rules/prefer-alphabetical-dependencies');
const alphabeticalSort = require('../../../src/validators/alphabetical-sort');
const property = require('../../../src/validators/property');
const {lint, ruleType} = ruleModule;
jest.mock('../../../src/validators/alphabetical-sort');
jest.mock('../../../src/validators/property');
const nodeName = 'dependencies';
describe('prefer-alphabetical-dependencies Unit Tests', () => {
describe('a rule type value should be exported', () => {
test('it should equal "standard"', () => {
expect(ruleType).toStrictEqual('standard');
});
});
describe('when package.json has node with an invalid order', () => {
test('LintIssue object should be returned', () => {
alphabeticalSort.isInAlphabeticalOrder.mockReturnValue({
status: false,
data: {
invalidNode: 'semver',
validNode: 'chalk'
}
});
property.exists.mockReturnValue(true);
const packageJsonData = {
dependencies: {
semver: '^5.3.0',
chalk: '^1.1.3',
'user-home': '^2.0.0'
}
};
const response = lint(packageJsonData, 'error');
expect(response.lintId).toStrictEqual('prefer-alphabetical-dependencies');
expect(response.severity).toStrictEqual('error');
expect(response.node).toStrictEqual('dependencies');
expect(response.lintMessage).toStrictEqual(
'Your dependencies are not in alphabetical order. Please move semver after chalk.'
);
expect(property.exists).toHaveBeenCalledTimes(1);
expect(property.exists).toHaveBeenCalledWith(packageJsonData, nodeName);
expect(alphabeticalSort.isInAlphabeticalOrder).toHaveBeenCalledTimes(1);
expect(alphabeticalSort.isInAlphabeticalOrder).toHaveBeenCalledWith(packageJsonData, nodeName);
});
});
describe('when package.json has node with a valid order', () => {
test('true should be returned', () => {
alphabeticalSort.isInAlphabeticalOrder.mockReturnValue({
status: true,
data: {}
});
property.exists.mockReturnValue(true);
const packageJsonData = {
dependencies: {
chalk: '^1.1.3',
semver: '^5.3.0',
'user-home': '^2.0.0'
}
};
const response = lint(packageJsonData, 'error');
expect(response).toBeTruthy();
expect(property.exists).toHaveBeenCalledTimes(1);
expect(property.exists).toHaveBeenCalledWith(packageJsonData, nodeName);
expect(alphabeticalSort.isInAlphabeticalOrder).toHaveBeenCalledTimes(1);
expect(alphabeticalSort.isInAlphabeticalOrder).toHaveBeenCalledWith(packageJsonData, nodeName);
});
});
describe('when package.json does not have node', () => {
test('true should be returned', () => {
property.exists.mockReturnValue(false);
const packageJsonData = {};
const response = lint(packageJsonData, 'error');
expect(response).toBeTruthy();
expect(property.exists).toHaveBeenCalledTimes(1);
expect(property.exists).toHaveBeenCalledWith(packageJsonData, nodeName);
});
});
});