From 433ac2823eabb15255af3ebd75d646dfc7b72260 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 22 May 2021 21:37:09 -0400 Subject: [PATCH] Added converter for react-a11y-accessible-headings --- .../lintConfigs/rules/ruleConverters.ts | 2 ++ .../react-a11y-accessible-headings.ts | 13 +++++++ .../react-a11y-accessible-headings.test.ts | 36 +++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 src/converters/lintConfigs/rules/ruleConverters/react-a11y-accessible-headings.ts create mode 100644 src/converters/lintConfigs/rules/ruleConverters/tests/react-a11y-accessible-headings.test.ts diff --git a/src/converters/lintConfigs/rules/ruleConverters.ts b/src/converters/lintConfigs/rules/ruleConverters.ts index 0b4286cc5..2625b8d4e 100644 --- a/src/converters/lintConfigs/rules/ruleConverters.ts +++ b/src/converters/lintConfigs/rules/ruleConverters.ts @@ -129,6 +129,7 @@ import { convertPreferTemplate } from "./ruleConverters/prefer-template"; import { convertPromiseFunctionAsync } from "./ruleConverters/promise-function-async"; import { convertQuotemark } from "./ruleConverters/quotemark"; import { convertRadix } from "./ruleConverters/radix"; +import { convertReactA11yAccessibleHeadings } from "./ruleConverters/react-a11y-accessible-headings"; import { convertRestrictPlusOperands } from "./ruleConverters/restrict-plus-operands"; import { convertSemicolon } from "./ruleConverters/semicolon"; import { convertSpaceBeforeFunctionParen } from "./ruleConverters/space-before-function-paren"; @@ -403,6 +404,7 @@ export const ruleConverters = new Map([ ["quotemark", convertQuotemark], ["radix", convertRadix], ["relative-url-prefix", convertRelativeUrlPrefix], + ["convert-react-a11y-accessible-headings", convertReactA11yAccessibleHeadings], ["restrict-plus-operands", convertRestrictPlusOperands], ["semicolon", convertSemicolon], ["space-before-function-paren", convertSpaceBeforeFunctionParen], diff --git a/src/converters/lintConfigs/rules/ruleConverters/react-a11y-accessible-headings.ts b/src/converters/lintConfigs/rules/ruleConverters/react-a11y-accessible-headings.ts new file mode 100644 index 000000000..fb340c5c4 --- /dev/null +++ b/src/converters/lintConfigs/rules/ruleConverters/react-a11y-accessible-headings.ts @@ -0,0 +1,13 @@ +import { RuleConverter } from "../ruleConverter"; + +export const convertReactA11yAccessibleHeadings: RuleConverter = (tslintRule) => { + return { + ...tslintRule.ruleArguments.length === 1 && { notices: ["jsx-a11y/heading-has-content rule does not support maxHeadingLength"] }, + plugins: ["jsx-a11y"], + rules: [ + { + ruleName: "jsx-a11y/heading-has-content", + }, + ], + }; +}; diff --git a/src/converters/lintConfigs/rules/ruleConverters/tests/react-a11y-accessible-headings.test.ts b/src/converters/lintConfigs/rules/ruleConverters/tests/react-a11y-accessible-headings.test.ts new file mode 100644 index 000000000..9eeca6caf --- /dev/null +++ b/src/converters/lintConfigs/rules/ruleConverters/tests/react-a11y-accessible-headings.test.ts @@ -0,0 +1,36 @@ +import { convertReactA11yAccessibleHeadings } from "../react-a11y-accessible-headings"; + +describe(convertReactA11yAccessibleHeadings, () => { + test("conversion without arguments", () => { + const result = convertReactA11yAccessibleHeadings({ + ruleArguments: [], + }); + + expect(result).toEqual({ + plugins: ["jsx-a11y"], + rules: [ + { + ruleName: "jsx-a11y/heading-has-content", + }, + ], + }); + }); + + test("conversion with an argument", () => { + const result = convertReactA11yAccessibleHeadings({ + ruleArguments: [{ + maxHeadingLength: 23, + }], + }); + + expect(result).toEqual({ + notices: ["jsx-a11y/heading-has-content rule does not support maxHeadingLength"], + plugins: ["jsx-a11y"], + rules: [ + { + ruleName: "jsx-a11y/heading-has-content", + }, + ], + }); + }); +});