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..15e17ef85 --- /dev/null +++ b/src/rules/converters/eslint-plugin-react/tests/jsx-curly-spacing.test.ts @@ -0,0 +1,58 @@ +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 'always' argument", () => { + const alwaysResult = convertJsxCurlySpacing({ + ruleArguments: ["always"], + }); + + expect(alwaysResult).toEqual({ + rules: [ + { + ruleArguments: [ + { + when: "always", + }, + ], + ruleName: "react/jsx-curly-spacing", + }, + ], + plugins: ["eslint-plugin-react"], + }); + }); + + test("conversion with 'never' argument", () => { + const neverResult = convertJsxCurlySpacing({ + ruleArguments: ["never"], + }); + + 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 8580edaef..31be596f3 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"; import { convertJsxEqualsSpacing } from "./converters/eslint-plugin-react/jsx-equals-spacing"; import { convertJsxKey } from "./converters/eslint-plugin-react/jsx-key"; @@ -214,6 +215,7 @@ export const rulesConverters = new Map([ ["interface-over-type-literal", convertInterfaceOverTypeLiteral], ["jsdoc-format", convertJSDocFormat], ["jsx-boolean-value", convertJsxBooleanValue], + ["jsx-curly-spacing", convertJsxCurlySpacing], ["jsx-equals-spacing", convertJsxEqualsSpacing], ["jsx-key", convertJsxKey], ["label-position", convertLabelPosition],