Skip to content

Commit 7af8d9a

Browse files
committed
test: add simple generic config validations
1 parent fac8171 commit 7af8d9a

File tree

10 files changed

+539
-4
lines changed

10 files changed

+539
-4
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`rules type-enum empty 1`] = `
4+
Array [
5+
false,
6+
"type must be one of [2, always, build,ci,docs,feat,fix,perf,refactor,revert,style,test]",
7+
]
8+
`;
9+
10+
exports[`rules type-enum filled 1`] = `
11+
Array [
12+
false,
13+
"type must be one of [2, always, build,ci,docs,feat,fix,perf,refactor,revert,style,test]",
14+
]
15+
`;
16+
17+
exports[`rules type-enum simple 1`] = `
18+
Array [
19+
false,
20+
"type must be one of [2, always, build,ci,docs,feat,fix,perf,refactor,revert,style,test]",
21+
]
22+
`;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import config from '.';
2+
import rules from '@commitlint/rules';
3+
import parse from '@commitlint/parse';
4+
5+
const messages = Object.entries({
6+
simple: 'test: subject',
7+
empty: 'test: subject\nbody',
8+
filled: 'test: subject\nBREAKING CHANGE: something important'
9+
});
10+
const configRules = Object.entries(config.rules);
11+
12+
it('should have correct structure', () => {
13+
expect(config).toMatchObject({
14+
rules: expect.any(Object)
15+
});
16+
});
17+
18+
describe('rules', () => {
19+
describe.each(configRules)('%s', (name, options) => {
20+
const severity = options.unshift();
21+
it.each(messages)('%s', async (type, message) => {
22+
expect(
23+
rules[name](await parse(message), severity, options)
24+
).toMatchSnapshot();
25+
});
26+
});
27+
});

@commitlint/config-angular-type-enum/package.json

+8-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,14 @@
2828
"url": "https://github.com/conventional-changelog/commitlint/issues"
2929
},
3030
"homepage": "https://github.com/conventional-changelog/commitlint#readme",
31+
"babel": {
32+
"presets": [
33+
"babel-preset-commitlint"
34+
]
35+
},
3136
"devDependencies": {
32-
"@commitlint/utils": "^8.3.4"
37+
"@commitlint/utils": "^8.3.4",
38+
"@commitlint/rules": "^8.3.4",
39+
"@commitlint/parse": "^8.3.4"
3340
}
3441
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,204 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`rules body-leading-blank empty 1`] = `
4+
Array [
5+
false,
6+
"body must have leading blank line",
7+
]
8+
`;
9+
10+
exports[`rules body-leading-blank filled 1`] = `
11+
Array [
12+
true,
13+
]
14+
`;
15+
16+
exports[`rules body-leading-blank simple 1`] = `
17+
Array [
18+
true,
19+
]
20+
`;
21+
22+
exports[`rules footer-leading-blank empty 1`] = `
23+
Array [
24+
true,
25+
]
26+
`;
27+
28+
exports[`rules footer-leading-blank filled 1`] = `
29+
Array [
30+
false,
31+
"footer must have leading blank line",
32+
]
33+
`;
34+
35+
exports[`rules footer-leading-blank simple 1`] = `
36+
Array [
37+
true,
38+
]
39+
`;
40+
41+
exports[`rules header-max-length empty 1`] = `
42+
Array [
43+
false,
44+
"header must not be longer than 2,always,72 characters, current length is 13",
45+
]
46+
`;
47+
48+
exports[`rules header-max-length filled 1`] = `
49+
Array [
50+
false,
51+
"header must not be longer than 2,always,72 characters, current length is 13",
52+
]
53+
`;
54+
55+
exports[`rules header-max-length simple 1`] = `
56+
Array [
57+
false,
58+
"header must not be longer than 2,always,72 characters, current length is 13",
59+
]
60+
`;
61+
62+
exports[`rules scope-case empty 1`] = `
63+
Array [
64+
true,
65+
]
66+
`;
67+
68+
exports[`rules scope-case filled 1`] = `
69+
Array [
70+
true,
71+
]
72+
`;
73+
74+
exports[`rules scope-case simple 1`] = `
75+
Array [
76+
true,
77+
]
78+
`;
79+
80+
exports[`rules subject-case empty 1`] = `
81+
Array [
82+
true,
83+
"subject must be , never, ",
84+
]
85+
`;
86+
87+
exports[`rules subject-case filled 1`] = `
88+
Array [
89+
true,
90+
"subject must be , never, ",
91+
]
92+
`;
93+
94+
exports[`rules subject-case simple 1`] = `
95+
Array [
96+
true,
97+
"subject must be , never, ",
98+
]
99+
`;
100+
101+
exports[`rules subject-empty empty 1`] = `
102+
Array [
103+
false,
104+
"subject must be empty",
105+
]
106+
`;
107+
108+
exports[`rules subject-empty filled 1`] = `
109+
Array [
110+
false,
111+
"subject must be empty",
112+
]
113+
`;
114+
115+
exports[`rules subject-empty simple 1`] = `
116+
Array [
117+
false,
118+
"subject must be empty",
119+
]
120+
`;
121+
122+
exports[`rules subject-full-stop empty 1`] = `
123+
Array [
124+
false,
125+
"subject must end with full stop",
126+
]
127+
`;
128+
129+
exports[`rules subject-full-stop filled 1`] = `
130+
Array [
131+
false,
132+
"subject must end with full stop",
133+
]
134+
`;
135+
136+
exports[`rules subject-full-stop simple 1`] = `
137+
Array [
138+
false,
139+
"subject must end with full stop",
140+
]
141+
`;
142+
143+
exports[`rules type-case empty 1`] = `
144+
Array [
145+
true,
146+
"type must be , always, lower-case",
147+
]
148+
`;
149+
150+
exports[`rules type-case filled 1`] = `
151+
Array [
152+
true,
153+
"type must be , always, lower-case",
154+
]
155+
`;
156+
157+
exports[`rules type-case simple 1`] = `
158+
Array [
159+
true,
160+
"type must be , always, lower-case",
161+
]
162+
`;
163+
164+
exports[`rules type-empty empty 1`] = `
165+
Array [
166+
false,
167+
"type must be empty",
168+
]
169+
`;
170+
171+
exports[`rules type-empty filled 1`] = `
172+
Array [
173+
false,
174+
"type must be empty",
175+
]
176+
`;
177+
178+
exports[`rules type-empty simple 1`] = `
179+
Array [
180+
false,
181+
"type must be empty",
182+
]
183+
`;
184+
185+
exports[`rules type-enum empty 1`] = `
186+
Array [
187+
false,
188+
"type must be one of [2, always, build,ci,docs,feat,fix,perf,refactor,revert,style,test]",
189+
]
190+
`;
191+
192+
exports[`rules type-enum filled 1`] = `
193+
Array [
194+
false,
195+
"type must be one of [2, always, build,ci,docs,feat,fix,perf,refactor,revert,style,test]",
196+
]
197+
`;
198+
199+
exports[`rules type-enum simple 1`] = `
200+
Array [
201+
false,
202+
"type must be one of [2, always, build,ci,docs,feat,fix,perf,refactor,revert,style,test]",
203+
]
204+
`;
+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import config from '.';
2+
import rules from '@commitlint/rules';
3+
import parse from '@commitlint/parse';
4+
5+
const messages = Object.entries({
6+
simple: 'test: subject',
7+
empty: 'test: subject\nbody',
8+
filled: 'test: subject\nBREAKING CHANGE: something important'
9+
});
10+
const configRules = Object.entries(config.rules);
11+
12+
it('should have correct structure', () => {
13+
expect(config).toMatchObject({
14+
rules: expect.any(Object)
15+
});
16+
});
17+
18+
describe('rules', () => {
19+
describe.each(configRules)('%s', (name, options) => {
20+
const severity = options.unshift();
21+
it.each(messages)('%s', async (type, message) => {
22+
expect(
23+
rules[name](await parse(message), severity, options)
24+
).toMatchSnapshot();
25+
});
26+
});
27+
});

@commitlint/config-angular/package.json

+8-1
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,15 @@
2828
"url": "https://github.com/conventional-changelog/commitlint/issues"
2929
},
3030
"homepage": "https://github.com/conventional-changelog/commitlint#readme",
31+
"babel": {
32+
"presets": [
33+
"babel-preset-commitlint"
34+
]
35+
},
3136
"devDependencies": {
32-
"@commitlint/utils": "^8.3.4"
37+
"@commitlint/utils": "^8.3.4",
38+
"@commitlint/rules": "^8.3.4",
39+
"@commitlint/parse": "^8.3.4"
3340
},
3441
"dependencies": {
3542
"@commitlint/config-angular-type-enum": "^8.3.4"

0 commit comments

Comments
 (0)