From 6a0b5084c4c75af8ca1a4be88090f34b0986e533 Mon Sep 17 00:00:00 2001 From: KingDarBoja Date: Mon, 4 May 2020 22:56:06 -0500 Subject: [PATCH] Add codelyzer component-selector converter --- .../codelyzer/component-selector.ts | 21 +++++++++ .../tests/component-selector.test.ts | 47 +++++++++++++++++++ src/rules/rulesConverters.ts | 2 + 3 files changed, 70 insertions(+) create mode 100644 src/rules/converters/codelyzer/component-selector.ts create mode 100644 src/rules/converters/codelyzer/tests/component-selector.test.ts diff --git a/src/rules/converters/codelyzer/component-selector.ts b/src/rules/converters/codelyzer/component-selector.ts new file mode 100644 index 000000000..977c6510d --- /dev/null +++ b/src/rules/converters/codelyzer/component-selector.ts @@ -0,0 +1,21 @@ +import { RuleConverter } from "../../converter"; + +export const convertComponentSelector: RuleConverter = (tslintRule) => { + return { + rules: [ + { + ...(tslintRule.ruleArguments.length !== 0 && { + ruleArguments: [ + { + type: tslintRule.ruleArguments[0], + prefix: tslintRule.ruleArguments[1], + style: tslintRule.ruleArguments[2], + }, + ], + }), + ruleName: "@angular-eslint/component-selector", + }, + ], + plugins: ["@angular-eslint/eslint-plugin"], + }; +}; diff --git a/src/rules/converters/codelyzer/tests/component-selector.test.ts b/src/rules/converters/codelyzer/tests/component-selector.test.ts new file mode 100644 index 000000000..571fb3106 --- /dev/null +++ b/src/rules/converters/codelyzer/tests/component-selector.test.ts @@ -0,0 +1,47 @@ +import { convertComponentSelector } from "../component-selector"; + +describe(convertComponentSelector, () => { + test("conversion with arguments of same type", () => { + const result = convertComponentSelector({ + ruleArguments: ["attribute", "myPrefix", "camelCase"], + }); + + expect(result).toEqual({ + rules: [ + { + ruleArguments: [ + { + type: "attribute", + prefix: "myPrefix", + style: "camelCase", + }, + ], + ruleName: "@angular-eslint/component-selector", + }, + ], + plugins: ["@angular-eslint/eslint-plugin"], + }); + }); + + test("conversion with arguments of mixed type", () => { + const result = convertComponentSelector({ + ruleArguments: ["element", ["ng", "ngx"], "kebab-case"], + }); + + expect(result).toEqual({ + rules: [ + { + ruleArguments: [ + { + type: "element", + prefix: ["ng", "ngx"], + style: "kebab-case", + }, + ], + ruleName: "@angular-eslint/component-selector", + }, + ], + plugins: ["@angular-eslint/eslint-plugin"], + }); + }); +}); diff --git a/src/rules/rulesConverters.ts b/src/rules/rulesConverters.ts index 206f02b00..14034375c 100644 --- a/src/rules/rulesConverters.ts +++ b/src/rules/rulesConverters.ts @@ -139,6 +139,7 @@ import { convertVariableName } from "./converters/variable-name"; // Codelyzer converters import { convertComponentClassSuffix } from "./converters/codelyzer/component-class-suffix"; +import { convertComponentSelector } from "./converters/codelyzer/component-selector"; /** * Keys TSLint rule names to their ESLint rule converters. @@ -158,6 +159,7 @@ export const rulesConverters = new Map([ ["class-name", convertClassName], ["comment-format", convertCommentFormat], ["component-class-suffix", convertComponentClassSuffix], + ["component-selector", convertComponentSelector], ["curly", convertCurly], ["cyclomatic-complexity", convertCyclomaticComplexity], ["deprecation", convertDeprecation],