Skip to content

Commit ed1cdd9

Browse files
author
Josh Goldberg
authored
Added converter for react-a11y-accessible-headings (#1088)
1 parent 6ca6a01 commit ed1cdd9

File tree

3 files changed

+55
-4
lines changed

3 files changed

+55
-4
lines changed

src/converters/lintConfigs/rules/ruleConverters.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,6 @@ import { convertNoMagicNumbers } from "./ruleConverters/no-magic-numbers";
193193
import { convertNoMisusedNew } from "./ruleConverters/no-misused-new";
194194
import { convertNoMultilineString } from "./ruleConverters/no-multiline-string";
195195
import { convertNoNamespace } from "./ruleConverters/no-namespace";
196-
import { convertNonLiteralRequire } from "./ruleConverters/non-literal-require";
197196
import { convertNoNonNullAssertion } from "./ruleConverters/no-non-null-assertion";
198197
import { convertNoNullKeyword } from "./ruleConverters/no-null-keyword";
199198
import { convertNoObjectLiteralTypeAssertion } from "./ruleConverters/no-object-literal-type-assertion";
@@ -229,6 +228,7 @@ import { convertNoVarKeyword } from "./ruleConverters/no-var-keyword";
229228
import { convertNoVarRequires } from "./ruleConverters/no-var-requires";
230229
import { convertNoVoidExpression } from "./ruleConverters/no-void-expression";
231230
import { convertNoWithStatement } from "./ruleConverters/no-with-statement";
231+
import { convertNonLiteralRequire } from "./ruleConverters/non-literal-require";
232232
import { convertObjectLiteralKeyQuotes } from "./ruleConverters/object-literal-key-quotes";
233233
import { convertObjectLiteralShorthand } from "./ruleConverters/object-literal-shorthand";
234234
import { convertOneLine } from "./ruleConverters/one-line";
@@ -248,6 +248,7 @@ import { convertPreferTemplate } from "./ruleConverters/prefer-template";
248248
import { convertPromiseFunctionAsync } from "./ruleConverters/promise-function-async";
249249
import { convertQuotemark } from "./ruleConverters/quotemark";
250250
import { convertRadix } from "./ruleConverters/radix";
251+
import { convertReactA11yAccessibleHeadings } from "./ruleConverters/react-a11y-accessible-headings";
251252
import { convertReactA11yAnchors } from "./ruleConverters/react-a11y-anchors";
252253
import { convertRestrictPlusOperands } from "./ruleConverters/restrict-plus-operands";
253254
import { convertSemicolon } from "./ruleConverters/semicolon";
@@ -292,6 +293,7 @@ export const ruleConverters = new Map([
292293
["consecutive-overloads", convertConsecutiveOverloads],
293294
["contextual-decorator", convertContextualDecorator],
294295
["contextual-lifecycle", convertContextualLifecycle],
296+
["convert-react-a11y-accessible-headings", convertReactA11yAccessibleHeadings],
295297
["curly", convertCurly],
296298
["cyclomatic-complexity", convertCyclomaticComplexity],
297299
["deprecation", convertDeprecation],
@@ -367,8 +369,8 @@ export const ruleConverters = new Map([
367369
["no-empty-line-after-opening-brace", convertNoEmptyLineAfterOpeningBrace],
368370
["no-empty-nested-blocks", convertNoEmptyNestedBlocks],
369371
["no-empty", convertNoEmpty],
370-
["no-exec-script", convertNoExecScript],
371372
["no-eval", convertNoEval],
373+
["no-exec-script", convertNoExecScript],
372374
["no-extra-semicolon", convertNoExtraSemicolon],
373375
["no-floating-promises", convertNoFloatingPromises],
374376
["no-for-in-array", convertNoForInArray],
@@ -398,7 +400,6 @@ export const ruleConverters = new Map([
398400
["no-multiline-string-literals", convertNoMultilineStringLiterals],
399401
["no-multiline-string", convertNoMultilineString],
400402
["no-namespace", convertNoNamespace],
401-
["non-literal-require", convertNonLiteralRequire],
402403
["no-non-null-assertion", convertNoNonNullAssertion],
403404
["no-null-keyword", convertNoNullKeyword],
404405
["no-object-literal-type-assertion", convertNoObjectLiteralTypeAssertion],
@@ -452,6 +453,7 @@ export const ruleConverters = new Map([
452453
["no-variable-usage-before-declaration", convertNoVariableUsageBeforeDeclaration],
453454
["no-void-expression", convertNoVoidExpression],
454455
["no-with-statement", convertNoWithStatement],
456+
["non-literal-require", convertNonLiteralRequire],
455457
["object-literal-key-quotes", convertObjectLiteralKeyQuotes],
456458
["object-literal-shorthand", convertObjectLiteralShorthand],
457459
["one-line", convertOneLine],
@@ -477,8 +479,8 @@ export const ruleConverters = new Map([
477479
["promise-function-async", convertPromiseFunctionAsync],
478480
["quotemark", convertQuotemark],
479481
["radix", convertRadix],
480-
["relative-url-prefix", convertRelativeUrlPrefix],
481482
["react-a11y-anchors", convertReactA11yAnchors],
483+
["relative-url-prefix", convertRelativeUrlPrefix],
482484
["restrict-plus-operands", convertRestrictPlusOperands],
483485
["rxjs-no-async-subscribe", convertNoAsyncSubscribe],
484486
["rxjs-no-create", convertNoCreate],
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { RuleConverter } from "../ruleConverter";
2+
3+
export const convertReactA11yAccessibleHeadings: RuleConverter = (tslintRule) => {
4+
return {
5+
...tslintRule.ruleArguments.length === 1 && { notices: ["jsx-a11y/heading-has-content rule does not support maxHeadingLength"] },
6+
plugins: ["jsx-a11y"],
7+
rules: [
8+
{
9+
ruleName: "jsx-a11y/heading-has-content",
10+
},
11+
],
12+
};
13+
};
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { convertReactA11yAccessibleHeadings } from "../react-a11y-accessible-headings";
2+
3+
describe(convertReactA11yAccessibleHeadings, () => {
4+
test("conversion without arguments", () => {
5+
const result = convertReactA11yAccessibleHeadings({
6+
ruleArguments: [],
7+
});
8+
9+
expect(result).toEqual({
10+
plugins: ["jsx-a11y"],
11+
rules: [
12+
{
13+
ruleName: "jsx-a11y/heading-has-content",
14+
},
15+
],
16+
});
17+
});
18+
19+
test("conversion with an argument", () => {
20+
const result = convertReactA11yAccessibleHeadings({
21+
ruleArguments: [{
22+
maxHeadingLength: 23,
23+
}],
24+
});
25+
26+
expect(result).toEqual({
27+
notices: ["jsx-a11y/heading-has-content rule does not support maxHeadingLength"],
28+
plugins: ["jsx-a11y"],
29+
rules: [
30+
{
31+
ruleName: "jsx-a11y/heading-has-content",
32+
},
33+
],
34+
});
35+
});
36+
});

0 commit comments

Comments
 (0)