From 3fec27317d3106aa72626b6c36adac725df27132 Mon Sep 17 00:00:00 2001 From: KingDarBoja Date: Sat, 6 Mar 2021 17:40:31 -0500 Subject: [PATCH] Add codelyzer template-i18n converter --- .../lintConfigs/rules/ruleConverters.ts | 2 + .../ruleConverters/codelyzer/template-i18n.ts | 20 ++++++++++ .../codelyzer/tests/template-i18n.test.ts | 39 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 src/converters/lintConfigs/rules/ruleConverters/codelyzer/template-i18n.ts create mode 100644 src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/template-i18n.test.ts diff --git a/src/converters/lintConfigs/rules/ruleConverters.ts b/src/converters/lintConfigs/rules/ruleConverters.ts index fe455ff7b..b33a3633e 100644 --- a/src/converters/lintConfigs/rules/ruleConverters.ts +++ b/src/converters/lintConfigs/rules/ruleConverters.ts @@ -172,6 +172,7 @@ import { convertTemplateBananaInBox } from "./ruleConverters/codelyzer/template- import { convertTemplateClickEventsHaveKeyEvents } from "./ruleConverters/codelyzer/template-click-events-have-key-events"; import { convertTemplateConditionalComplexity } from "./ruleConverters/codelyzer/template-conditional-complexity"; import { convertTemplateCyclomaticComplexity } from "./ruleConverters/codelyzer/template-cyclomatic-complexity"; +import { convertTemplateI18N } from "./ruleConverters/codelyzer/template-i18n"; import { convertTemplateMouseEventsHaveKeyEvents } from "./ruleConverters/codelyzer/template-mouse-events-have-key-events"; import { convertTemplateNoAny } from "./ruleConverters/codelyzer/template-no-any"; import { convertTemplateNoAutofocus } from "./ruleConverters/codelyzer/template-no-autofocus"; @@ -392,6 +393,7 @@ export const ruleConverters = new Map([ ["template-conditional-complexity", convertTemplateConditionalComplexity], ["template-click-events-have-key-events", convertTemplateClickEventsHaveKeyEvents], ["template-cyclomatic-complexity", convertTemplateCyclomaticComplexity], + ["template-i18n", convertTemplateI18N], ["template-mouse-events-have-key-events", convertTemplateMouseEventsHaveKeyEvents], ["template-no-any", convertTemplateNoAny], ["template-no-autofocus", convertTemplateNoAutofocus], diff --git a/src/converters/lintConfigs/rules/ruleConverters/codelyzer/template-i18n.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/template-i18n.ts new file mode 100644 index 000000000..f4e2868a5 --- /dev/null +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/template-i18n.ts @@ -0,0 +1,20 @@ +import { RuleConverter } from "../../ruleConverter"; + +export const convertTemplateI18N: RuleConverter = (tslintRule) => { + return { + rules: [ + { + ...(tslintRule.ruleArguments.length !== 0 && { + ruleArguments: [ + { + ...(tslintRule.ruleArguments.includes("check-id") && { checkId: true }), + ...(tslintRule.ruleArguments.includes("check-text") && { checkText: true }), + }, + ], + }), + ruleName: "@angular-eslint/template/i18n", + }, + ], + plugins: ["@angular-eslint/eslint-plugin-template"], + }; +}; diff --git a/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/template-i18n.test.ts b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/template-i18n.test.ts new file mode 100644 index 000000000..4472c32bb --- /dev/null +++ b/src/converters/lintConfigs/rules/ruleConverters/codelyzer/tests/template-i18n.test.ts @@ -0,0 +1,39 @@ +import { convertTemplateI18N } from "../template-i18n"; + +describe(convertTemplateI18N, () => { + test("conversion without arguments", () => { + const result = convertTemplateI18N({ + ruleArguments: [], + }); + + expect(result).toEqual({ + rules: [ + { + ruleName: "@angular-eslint/template/i18n", + }, + ], + plugins: ["@angular-eslint/eslint-plugin-template"], + }); + }); + + test("conversion with arguments", () => { + const result = convertTemplateI18N({ + ruleArguments: ["check-id", "check-text"], + }); + + expect(result).toEqual({ + rules: [ + { + ruleArguments: [ + { + checkId: true, + checkText: true, + }, + ], + ruleName: "@angular-eslint/template/i18n", + }, + ], + plugins: ["@angular-eslint/eslint-plugin-template"], + }); + }); +});