From 26a4658fe9871ed9665f57948ea7941938ce49e7 Mon Sep 17 00:00:00 2001 From: KingDarBoja Date: Fri, 8 May 2020 21:41:40 -0500 Subject: [PATCH] Add codelyzer directive-selector converter --- .../codelyzer/directive-selector.ts | 21 +++++++++ .../tests/directive-selector.test.ts | 47 +++++++++++++++++++ src/rules/rulesConverters.ts | 2 + 3 files changed, 70 insertions(+) create mode 100644 src/rules/converters/codelyzer/directive-selector.ts create mode 100644 src/rules/converters/codelyzer/tests/directive-selector.test.ts diff --git a/src/rules/converters/codelyzer/directive-selector.ts b/src/rules/converters/codelyzer/directive-selector.ts new file mode 100644 index 000000000..75324bf60 --- /dev/null +++ b/src/rules/converters/codelyzer/directive-selector.ts @@ -0,0 +1,21 @@ +import { RuleConverter } from "../../converter"; + +export const convertDirectiveSelector: RuleConverter = (tslintRule) => { + return { + rules: [ + { + ...(tslintRule.ruleArguments.length !== 0 && { + ruleArguments: [ + { + type: tslintRule.ruleArguments[0], + prefix: tslintRule.ruleArguments[1], + style: tslintRule.ruleArguments[2], + }, + ], + }), + ruleName: "@angular-eslint/directive-selector", + }, + ], + plugins: ["@angular-eslint/eslint-plugin"], + }; +}; diff --git a/src/rules/converters/codelyzer/tests/directive-selector.test.ts b/src/rules/converters/codelyzer/tests/directive-selector.test.ts new file mode 100644 index 000000000..8ddc97b0e --- /dev/null +++ b/src/rules/converters/codelyzer/tests/directive-selector.test.ts @@ -0,0 +1,47 @@ +import { convertDirectiveSelector } from "../directive-selector"; + +describe(convertDirectiveSelector, () => { + test("conversion with arguments of same type", () => { + const result = convertDirectiveSelector({ + ruleArguments: ["attribute", "myPrefix", "camelCase"], + }); + + expect(result).toEqual({ + rules: [ + { + ruleArguments: [ + { + type: "attribute", + prefix: "myPrefix", + style: "camelCase", + }, + ], + ruleName: "@angular-eslint/directive-selector", + }, + ], + plugins: ["@angular-eslint/eslint-plugin"], + }); + }); + + test("conversion with arguments of mixed type", () => { + const result = convertDirectiveSelector({ + ruleArguments: ["element", ["ng", "ngx"], "kebab-case"], + }); + + expect(result).toEqual({ + rules: [ + { + ruleArguments: [ + { + type: "element", + prefix: ["ng", "ngx"], + style: "kebab-case", + }, + ], + ruleName: "@angular-eslint/directive-selector", + }, + ], + plugins: ["@angular-eslint/eslint-plugin"], + }); + }); +}); diff --git a/src/rules/rulesConverters.ts b/src/rules/rulesConverters.ts index 86f46038e..9c94d6415 100644 --- a/src/rules/rulesConverters.ts +++ b/src/rules/rulesConverters.ts @@ -142,6 +142,7 @@ import { convertComponentClassSuffix } from "./converters/codelyzer/component-cl import { convertComponentMaxInlineDeclarations } from "./converters/codelyzer/component-max-inline-declarations"; import { convertComponentSelector } from "./converters/codelyzer/component-selector"; import { convertContextualLifecycle } from "./converters/codelyzer/contextual-lifecycle"; +import { convertDirectiveSelector } from "./converters/codelyzer/directive-selector"; /** * Keys TSLint rule names to their ESLint rule converters. @@ -167,6 +168,7 @@ export const rulesConverters = new Map([ ["curly", convertCurly], ["cyclomatic-complexity", convertCyclomaticComplexity], ["deprecation", convertDeprecation], + ["directive-selector", convertDirectiveSelector], ["eofline", convertEofline], ["file-name-casing", convertFileNameCasing], ["forin", convertForin],