diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameProps/component-groups-notAuthorized-rename-props.md b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameProps/component-groups-notAuthorized-rename-props.md new file mode 100644 index 000000000..d614bc5d2 --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameProps/component-groups-notAuthorized-rename-props.md @@ -0,0 +1,17 @@ +### component-groups-notAuthorized-rename-props [(react-component-groups/#145)](https://github.com/patternfly/react-component-groups/pull/145) + +In react-component-groups, we've renamed NotAuthorized's props `description` to `bodyText` and `title` to `titleText`. + +#### Examples + +In: + +```jsx +%inputExample% +``` + +Out: + +```jsx +%outputExample% +``` diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameProps/component-groups-notAuthorized-rename-props.test.ts b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameProps/component-groups-notAuthorized-rename-props.test.ts new file mode 100644 index 000000000..4c09f68b9 --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameProps/component-groups-notAuthorized-rename-props.test.ts @@ -0,0 +1,93 @@ +const ruleTester = require("../../ruletester"); +import * as rule from "./component-groups-notAuthorized-rename-props"; + +const renameMap = { + description: "bodyText", + title: "titleText", +}; + +const errors = Object.entries(renameMap).map(([oldName, newName]) => ({ + message: `The ${oldName} prop for NotAuthorized has been renamed to ${newName}.`, + type: "JSXOpeningElement", +})); + +ruleTester.run("component-groups-notAuthorized-rename-props", rule, { + valid: [ + { + code: ``, + }, + { + code: ``, + }, + { + code: `import { NotAuthorized } from '@patternfly/react-component-groups'; `, + }, + ], + invalid: [ + { + code: `import { NotAuthorized } from '@patternfly/react-component-groups'; + `, + output: `import { NotAuthorized } from '@patternfly/react-component-groups'; + `, + errors, + }, + { + code: `import NotAuthorized from '@patternfly/react-component-groups/dist/cjs/NotAuthorized/index'; + `, + output: `import NotAuthorized from '@patternfly/react-component-groups/dist/cjs/NotAuthorized/index'; + `, + errors, + }, + { + code: `import NotAuthorized from '@patternfly/react-component-groups/dist/esm/NotAuthorized/index'; + `, + output: `import NotAuthorized from '@patternfly/react-component-groups/dist/esm/NotAuthorized/index'; + `, + errors, + }, + { + code: `import NotAuthorized from '@patternfly/react-component-groups/dist/dynamic/NotAuthorized'; + `, + output: `import NotAuthorized from '@patternfly/react-component-groups/dist/dynamic/NotAuthorized'; + `, + errors, + }, + { + code: `import NotAuth from '@patternfly/react-component-groups/dist/dynamic/NotAuthorized'; + `, + output: `import NotAuth from '@patternfly/react-component-groups/dist/dynamic/NotAuthorized'; + `, + errors, + }, + ], +}); diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameProps/component-groups-notAuthorized-rename-props.ts b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameProps/component-groups-notAuthorized-rename-props.ts new file mode 100644 index 000000000..01b27666a --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameProps/component-groups-notAuthorized-rename-props.ts @@ -0,0 +1,25 @@ +import { renameProps } from "../../helpers"; +import { Renames } from "../../helpers/renameSinglePropOnNode"; + +// https://github.com/patternfly/react-component-groups/pull/145 + +const formatMessage = (oldPropName: string, newPropName: string) => + `The ${oldPropName} prop for NotAuthorized has been renamed to ${newPropName}.`; + +const renames: Renames = { + NotAuthorized: { + description: { + newName: "bodyText", + message: formatMessage("description", "bodyText"), + }, + title: { + newName: "titleText", + message: formatMessage("title", "titleText"), + }, + }, +}; + +module.exports = { + meta: { fixable: "code" }, + create: renameProps(renames, "@patternfly/react-component-groups"), +}; diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameProps/componentGroupsNotAuthorizedRenamePropsInput.tsx b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameProps/componentGroupsNotAuthorizedRenamePropsInput.tsx new file mode 100644 index 000000000..aae86399f --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameProps/componentGroupsNotAuthorizedRenamePropsInput.tsx @@ -0,0 +1,5 @@ +import { NotAuthorized } from "@patternfly/react-component-groups"; + +export const ComponentGroupsNotAuthorizedRenamePropsInput = () => ( + +); diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameProps/componentGroupsNotAuthorizedRenamePropsOutput.tsx b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameProps/componentGroupsNotAuthorizedRenamePropsOutput.tsx new file mode 100644 index 000000000..3b42c7f2d --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameProps/componentGroupsNotAuthorizedRenamePropsOutput.tsx @@ -0,0 +1,5 @@ +import { NotAuthorized } from "@patternfly/react-component-groups"; + +export const ComponentGroupsNotAuthorizedRenamePropsInput = () => ( + +);