From 5d97897d6390000501bafcb1fc8157db3c726c42 Mon Sep 17 00:00:00 2001 From: KingDarBoja Date: Fri, 17 Jul 2020 20:48:02 -0500 Subject: [PATCH 1/2] Added jsx-curly-spacing converter --- .../eslint-plugin-react/jsx-curly-spacing.ts | 19 +++++++ .../tests/jsx-curly-spacing.test.ts | 54 +++++++++++++++++++ src/rules/rulesConverters.ts | 2 + 3 files changed, 75 insertions(+) create mode 100644 src/rules/converters/eslint-plugin-react/jsx-curly-spacing.ts create mode 100644 src/rules/converters/eslint-plugin-react/tests/jsx-curly-spacing.test.ts diff --git a/src/rules/converters/eslint-plugin-react/jsx-curly-spacing.ts b/src/rules/converters/eslint-plugin-react/jsx-curly-spacing.ts new file mode 100644 index 000000000..7c3a47a60 --- /dev/null +++ b/src/rules/converters/eslint-plugin-react/jsx-curly-spacing.ts @@ -0,0 +1,19 @@ +import { RuleConverter } from "../../converter"; + +export const convertJsxCurlySpacing: RuleConverter = (tslintRule) => { + return { + rules: [ + { + ...(tslintRule.ruleArguments.length !== 0 && { + ruleArguments: [ + { + when: tslintRule.ruleArguments[0], + }, + ], + }), + ruleName: "react/jsx-curly-spacing", + }, + ], + plugins: ["eslint-plugin-react"], + }; +}; diff --git a/src/rules/converters/eslint-plugin-react/tests/jsx-curly-spacing.test.ts b/src/rules/converters/eslint-plugin-react/tests/jsx-curly-spacing.test.ts new file mode 100644 index 000000000..36d7261cc --- /dev/null +++ b/src/rules/converters/eslint-plugin-react/tests/jsx-curly-spacing.test.ts @@ -0,0 +1,54 @@ +import { convertJsxCurlySpacing } from "../jsx-curly-spacing"; + +describe(convertJsxCurlySpacing, () => { + test("conversion without arguments", () => { + const result = convertJsxCurlySpacing({ + ruleArguments: [], + }); + + expect(result).toEqual({ + rules: [ + { + ruleName: "react/jsx-curly-spacing", + }, + ], + plugins: ["eslint-plugin-react"], + }); + }); + + test("conversion with arguments", () => { + const alwaysResult = convertJsxCurlySpacing({ + ruleArguments: ["always"], + }); + const neverResult = convertJsxCurlySpacing({ + ruleArguments: ["never"], + }); + + expect(alwaysResult).toEqual({ + rules: [ + { + ruleArguments: [ + { + when: "always", + }, + ], + ruleName: "react/jsx-curly-spacing", + }, + ], + plugins: ["eslint-plugin-react"], + }); + expect(neverResult).toEqual({ + rules: [ + { + ruleArguments: [ + { + when: "never", + }, + ], + ruleName: "react/jsx-curly-spacing", + }, + ], + plugins: ["eslint-plugin-react"], + }); + }); +}); diff --git a/src/rules/rulesConverters.ts b/src/rules/rulesConverters.ts index 6e7423df3..81f2e6fa4 100644 --- a/src/rules/rulesConverters.ts +++ b/src/rules/rulesConverters.ts @@ -174,6 +174,7 @@ import { convertUsePipeTransformInterface } from "./converters/codelyzer/use-pip // ESLint-React converters import { convertJsxBooleanValue } from "./converters/eslint-plugin-react/jsx-boolean-value"; +import { convertJsxCurlySpacing } from "./converters/eslint-plugin-react/jsx-curly-spacing"; /** * Keys TSLint rule names to their ESLint rule converters. @@ -212,6 +213,7 @@ export const rulesConverters = new Map([ ["interface-over-type-literal", convertInterfaceOverTypeLiteral], ["jsdoc-format", convertJSDocFormat], ["jsx-boolean-value", convertJsxBooleanValue], + ["jsx-curly-spacing", convertJsxCurlySpacing], ["label-position", convertLabelPosition], ["linebreak-style", convertLinebreakStyle], ["max-classes-per-file", convertMaxClassesPerFile], From 1bb88332d759b83c91f29e7fa0e64c1532b2aea3 Mon Sep 17 00:00:00 2001 From: KingDarBoja Date: Sat, 18 Jul 2020 10:35:15 -0500 Subject: [PATCH 2/2] Split jsx-curly-spacing tests --- .../tests/jsx-curly-spacing.test.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/rules/converters/eslint-plugin-react/tests/jsx-curly-spacing.test.ts b/src/rules/converters/eslint-plugin-react/tests/jsx-curly-spacing.test.ts index 36d7261cc..15e17ef85 100644 --- a/src/rules/converters/eslint-plugin-react/tests/jsx-curly-spacing.test.ts +++ b/src/rules/converters/eslint-plugin-react/tests/jsx-curly-spacing.test.ts @@ -16,13 +16,10 @@ describe(convertJsxCurlySpacing, () => { }); }); - test("conversion with arguments", () => { + test("conversion with 'always' argument", () => { const alwaysResult = convertJsxCurlySpacing({ ruleArguments: ["always"], }); - const neverResult = convertJsxCurlySpacing({ - ruleArguments: ["never"], - }); expect(alwaysResult).toEqual({ rules: [ @@ -37,6 +34,13 @@ describe(convertJsxCurlySpacing, () => { ], plugins: ["eslint-plugin-react"], }); + }); + + test("conversion with 'never' argument", () => { + const neverResult = convertJsxCurlySpacing({ + ruleArguments: ["never"], + }); + expect(neverResult).toEqual({ rules: [ {