Skip to content

Commit c25950b

Browse files
committed
fix: workaround missing options validation with jest styleint preset
1 parent 54e5330 commit c25950b

9 files changed

+58
-20
lines changed

jest.setup.js

+38
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,42 @@
11
/* eslint-disable @typescript-eslint/no-var-requires */
22
const { getTestRule } = require('jest-preset-stylelint');
3+
const { lint } = require('stylelint');
34

45
global.testRule = getTestRule({ plugins: ['./src/index.ts'] });
6+
7+
global.testOptions = testOptions;
8+
9+
function testOptions({ ruleName, config, reject }) {
10+
// eslint-disable-next-line no-undef
11+
describe(ruleName, () => {
12+
// eslint-disable-next-line no-undef
13+
it('warn for invalid options', async () => {
14+
const rejections = await Promise.all(
15+
reject.map(async ({ code, message }) => {
16+
const {
17+
results: [{ invalidOptionWarnings }],
18+
} = await lint({
19+
code,
20+
config: {
21+
plugins: ['./src/index.ts'],
22+
rules: {
23+
[ruleName]: config,
24+
},
25+
},
26+
});
27+
28+
return { message, invalidOptionWarnings };
29+
})
30+
);
31+
32+
rejections.forEach(({ message, invalidOptionWarnings }) => {
33+
const expectedWarning = {
34+
text: message,
35+
};
36+
37+
// eslint-disable-next-line no-undef
38+
expect(invalidOptionWarnings[0]).toMatchObject(expectedWarning);
39+
});
40+
});
41+
});
42+
}

test/auto-fix-func.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ testRule(
156156
}
157157
);
158158

159-
testRule({
159+
testOptions({
160160
skip: true,
161161
ruleName,
162162

@@ -170,12 +170,12 @@ testRule({
170170
reject: [
171171
{
172172
code: '.foo { color: red; }',
173-
message: `Invalid option "{"autoFixFunc":true}" for rule ${ruleName}`,
173+
message: `Invalid option "{"autoFixFunc":true}" for rule "${ruleName}"`,
174174
},
175175
],
176176
});
177177

178-
testRule({
178+
testOptions({
179179
skip: true,
180180
ruleName,
181181

@@ -189,7 +189,7 @@ testRule({
189189
reject: [
190190
{
191191
code: '.foo { color: red; }',
192-
message: `Invalid option "{"disableFix":1234}" for rule ${ruleName}`,
192+
message: `Invalid option "{"disableFix":1234}" for rule "${ruleName}"`,
193193
},
194194
],
195195
});

test/custom-message.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ testRule({
5050
],
5151
});
5252

53-
testRule({
53+
testOptions({
5454
skip: true,
5555
ruleName,
5656

@@ -64,7 +64,7 @@ testRule({
6464
reject: [
6565
{
6666
code: '.foo { color: red; }',
67-
message: `Invalid option "{"message":1234}" for rule ${ruleName}`,
67+
message: `Invalid option "{"message":1234}" for rule "${ruleName}"`,
6868
},
6969
],
7070
});

test/ignore-functions.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ testRule({
227227
],
228228
});
229229

230-
testRule({
230+
testOptions({
231231
skip: true,
232232
ruleName,
233233

@@ -241,7 +241,7 @@ testRule({
241241
reject: [
242242
{
243243
code: '.foo { color: red; }',
244-
message: `Invalid option "{"ignoreFunctions":"foo"}" for rule ${ruleName}`,
244+
message: `Invalid option "{"ignoreFunctions":"foo"}" for rule "${ruleName}"`,
245245
},
246246
],
247247
});

test/ignore-variables.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ testRule({
248248
],
249249
});
250250

251-
testRule({
251+
testOptions({
252252
skip: true,
253253
ruleName,
254254

@@ -262,7 +262,7 @@ testRule({
262262
reject: [
263263
{
264264
code: '.foo { color: red; }',
265-
message: `Invalid option "{"ignoreVariables":"foo"}" for rule ${ruleName}`,
265+
message: `Invalid option "{"ignoreVariables":"foo"}" for rule "${ruleName}"`,
266266
},
267267
],
268268
});

test/severity.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ testRule({
2727
],
2828
});
2929

30-
testRule({
30+
testOptions({
3131
skip: true,
3232
ruleName,
3333

@@ -41,7 +41,7 @@ testRule({
4141
reject: [
4242
{
4343
code: '.foo { color: red; }',
44-
message: `Invalid option "{"severity":1234}" for rule ${ruleName}`,
44+
message: `Invalid option "{"severity":1234}" for rule "${ruleName}"`,
4545
},
4646
],
4747
});

test/shorthand.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ testRule({
304304
],
305305
});
306306

307-
testRule({
307+
testOptions({
308308
skip: true,
309309
ruleName,
310310

@@ -318,12 +318,12 @@ testRule({
318318
reject: [
319319
{
320320
code: '.foo { border: red; }',
321-
message: `Invalid option "{"expandShorthand":"foo"}" for rule ${ruleName}`,
321+
message: `Invalid option "{"expandShorthand":"foo"}" for rule "${ruleName}"`,
322322
},
323323
],
324324
});
325325

326-
testRule({
326+
testOptions({
327327
skip: true,
328328
ruleName,
329329

@@ -337,7 +337,7 @@ testRule({
337337
reject: [
338338
{
339339
code: '.foo { border: red; }',
340-
message: `Invalid option "{"recurseLonghand":"foo"}" for rule ${ruleName}`,
340+
message: `Invalid option "{"recurseLonghand":"foo"}" for rule "${ruleName}"`,
341341
},
342342
],
343343
});

test/single-keyword.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ testRule({
7171
],
7272
});
7373

74-
testRule({
74+
testOptions({
7575
skip: true,
7676
ruleName,
7777

@@ -85,7 +85,7 @@ testRule({
8585
reject: [
8686
{
8787
code: '.foo { color: red; }',
88-
message: `Invalid option "{"ignoreKeywords":true}" for rule ${ruleName}`,
88+
message: `Invalid option "{"ignoreKeywords":true}" for rule "${ruleName}"`,
8989
},
9090
],
9191
});

test/single-value.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ testRule({
118118
],
119119
});
120120

121-
testRule({
121+
testOptions({
122122
skip: true,
123123
ruleName,
124124

@@ -132,7 +132,7 @@ testRule({
132132
reject: [
133133
{
134134
code: '.foo { color: red; }',
135-
message: `Invalid option "{"ignoreValues":true}" for rule ${ruleName}`,
135+
message: `Invalid option "{"ignoreValues":true}" for rule "${ruleName}"`,
136136
},
137137
],
138138
});

0 commit comments

Comments
 (0)