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
index 4c09f68b9..121eaf076 100644
--- 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
@@ -6,88 +6,99 @@ const renameMap = {
title: "titleText",
};
-const errors = Object.entries(renameMap).map(([oldName, newName]) => ({
- message: `The ${oldName} prop for NotAuthorized has been renamed to ${newName}.`,
- type: "JSXOpeningElement",
-}));
+const getErrors = (component: string) =>
+ Object.entries(renameMap).map(([oldName, newName]) => ({
+ message: `The ${oldName} prop for ${component} has been renamed to ${newName}.`,
+ type: "JSXOpeningElement",
+ }));
-ruleTester.run("component-groups-notAuthorized-rename-props", rule, {
- valid: [
+const components = ["NotAuthorized", "UnauthorizedAccess"];
+
+const valid = components
+ .map((component) => [
{
- code: ``,
+ code: `<${component} description="" />`,
},
{
- code: ``,
+ code: `<${component} title="" />`,
},
{
- code: `import { NotAuthorized } from '@patternfly/react-component-groups'; `,
+ code: `import { ${component} } from '@patternfly/react-component-groups'; <${component} someOtherProp />`,
},
- ],
- invalid: [
+ ])
+ .flat();
+
+const invalid = components
+ .map((component) => [
{
- code: `import { NotAuthorized } from '@patternfly/react-component-groups';
- `,
- output: `import { NotAuthorized } from '@patternfly/react-component-groups';
- `,
- errors,
+ code: `import { ${component} } from '@patternfly/react-component-groups';
+ <${component}
+ description="Description text"
+ title="Title text"
+ />`,
+ output: `import { ${component} } from '@patternfly/react-component-groups';
+ <${component}
+ bodyText="Description text"
+ titleText="Title text"
+ />`,
+ errors: getErrors(component),
},
{
- 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 ${component} from '@patternfly/react-component-groups/dist/cjs/${component}/index';
+ <${component}
+ description="Description text"
+ title="Title text"
+ />`,
+ output: `import ${component} from '@patternfly/react-component-groups/dist/cjs/${component}/index';
+ <${component}
+ bodyText="Description text"
+ titleText="Title text"
+ />`,
+ errors: getErrors(component),
},
{
- 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 ${component} from '@patternfly/react-component-groups/dist/esm/${component}/index';
+ <${component}
+ description="Description text"
+ title="Title text"
+ />`,
+ output: `import ${component} from '@patternfly/react-component-groups/dist/esm/${component}/index';
+ <${component}
+ bodyText="Description text"
+ titleText="Title text"
+ />`,
+ errors: getErrors(component),
},
{
- 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 ${component} from '@patternfly/react-component-groups/dist/dynamic/${component}';
+ <${component}
+ description="Description text"
+ title="Title text"
+ />`,
+ output: `import ${component} from '@patternfly/react-component-groups/dist/dynamic/${component}';
+ <${component}
+ bodyText="Description text"
+ titleText="Title text"
+ />`,
+ errors: getErrors(component),
},
{
- code: `import NotAuth from '@patternfly/react-component-groups/dist/dynamic/NotAuthorized';
- `,
- output: `import NotAuth from '@patternfly/react-component-groups/dist/dynamic/NotAuthorized';
- `,
- errors,
+ code: `import NotAuth from '@patternfly/react-component-groups/dist/dynamic/${component}';
+ `,
+ output: `import NotAuth from '@patternfly/react-component-groups/dist/dynamic/${component}';
+ `,
+ errors: getErrors(component),
},
- ],
+ ])
+ .flat();
+
+ruleTester.run("component-groups-notAuthorized-rename-props", rule, {
+ valid,
+ invalid,
});
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
index 01b27666a..36d1aa923 100644
--- 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
@@ -3,20 +3,27 @@ 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 formatMessage = (
+ component: string,
+ oldPropName: string,
+ newPropName: string
+) =>
+ `The ${oldPropName} prop for ${component} has been renamed to ${newPropName}.`;
-const renames: Renames = {
- NotAuthorized: {
- description: {
- newName: "bodyText",
- message: formatMessage("description", "bodyText"),
- },
- title: {
- newName: "titleText",
- message: formatMessage("title", "titleText"),
- },
+const getPropsRenames = (component: string) => ({
+ description: {
+ newName: "bodyText",
+ message: formatMessage(component, "description", "bodyText"),
+ },
+ title: {
+ newName: "titleText",
+ message: formatMessage(component, "title", "titleText"),
},
+});
+
+const renames: Renames = {
+ NotAuthorized: getPropsRenames("NotAuthorized"),
+ UnauthorizedAccess: getPropsRenames("UnauthorizedAccess"),
};
module.exports = {
diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameToUnauthorizedAccess/component-groups-notAuthorized-rename-to-unauthorizedAccess.md b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameToUnauthorizedAccess/component-groups-notAuthorized-rename-to-unauthorizedAccess.md
new file mode 100644
index 000000000..b029280ad
--- /dev/null
+++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameToUnauthorizedAccess/component-groups-notAuthorized-rename-to-unauthorizedAccess.md
@@ -0,0 +1,18 @@
+### component-groups-notAuthorized-rename-to-unauthorizedAccess [(react-component-groups/#313)](https://github.com/patternfly/react-component-groups/pull/313)
+
+In react-component-groups, we've renamed NotAuthorized component to UnauthorizedAccess
+
+#### Examples
+
+In:
+
+```jsx
+%inputExample%
+```
+
+Out:
+
+```jsx
+%outputExample%
+```
+
diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameToUnauthorizedAccess/component-groups-notAuthorized-rename-to-unauthorizedAccess.test.ts b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameToUnauthorizedAccess/component-groups-notAuthorized-rename-to-unauthorizedAccess.test.ts
new file mode 100644
index 000000000..4d7de0056
--- /dev/null
+++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameToUnauthorizedAccess/component-groups-notAuthorized-rename-to-unauthorizedAccess.test.ts
@@ -0,0 +1,61 @@
+const ruleTester = require("../../ruletester");
+import * as rule from "./component-groups-notAuthorized-rename-to-unauthorizedAccess";
+
+const errors = [
+ {
+ message: `NotAuthorized has been renamed to UnauthorizedAccess.`,
+ type: "JSXOpeningElement",
+ },
+];
+
+ruleTester.run(
+ "component-groups-notAuthorized-rename-to-unauthorizedAccess",
+ rule,
+ {
+ valid: [
+ // missing import
+ {
+ code: ``,
+ },
+ // import from wrong package
+ {
+ code: `import { NotAuthorized } from '@patternfly/react-core'; `,
+ },
+ ],
+ invalid: [
+ {
+ code: `import { NotAuthorized } from '@patternfly/react-component-groups'; `,
+ output: `import { UnauthorizedAccess } from '@patternfly/react-component-groups'; `,
+ errors,
+ },
+ // named import with alias
+ {
+ code: `import { NotAuthorized as NotAuth } from '@patternfly/react-component-groups'; `,
+ output: `import { UnauthorizedAccess as NotAuth } from '@patternfly/react-component-groups'; `,
+ errors,
+ },
+ // default imports
+ {
+ code: `import NotAuthorized from '@patternfly/react-component-groups/dist/cjs/NotAuthorized/index'; `,
+ output: `import UnauthorizedAccess from '@patternfly/react-component-groups/dist/cjs/UnauthorizedAccess/index'; `,
+ errors,
+ },
+ {
+ code: `import NotAuthorized from '@patternfly/react-component-groups/dist/esm/NotAuthorized/index'; `,
+ output: `import UnauthorizedAccess from '@patternfly/react-component-groups/dist/esm/UnauthorizedAccess/index'; `,
+ errors,
+ },
+ {
+ code: `import NotAuthorized from '@patternfly/react-component-groups/dist/dynamic/NotAuthorized'; `,
+ output: `import UnauthorizedAccess from '@patternfly/react-component-groups/dist/dynamic/UnauthorizedAccess'; `,
+ errors,
+ },
+ // default import with name not matching the component name
+ {
+ code: `import NotAuth from '@patternfly/react-component-groups/dist/dynamic/NotAuthorized'; `,
+ output: `import NotAuth from '@patternfly/react-component-groups/dist/dynamic/UnauthorizedAccess'; `,
+ errors,
+ },
+ ],
+ }
+);
diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameToUnauthorizedAccess/component-groups-notAuthorized-rename-to-unauthorizedAccess.ts b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameToUnauthorizedAccess/component-groups-notAuthorized-rename-to-unauthorizedAccess.ts
new file mode 100644
index 000000000..02ec4787c
--- /dev/null
+++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameToUnauthorizedAccess/component-groups-notAuthorized-rename-to-unauthorizedAccess.ts
@@ -0,0 +1,12 @@
+import { renameComponent } from "../../helpers/renameComponent";
+
+// https://github.com/patternfly/react-component-groups/pull/313
+module.exports = {
+ meta: { fixable: "code" },
+ create: renameComponent(
+ {
+ NotAuthorized: "UnauthorizedAccess",
+ },
+ "@patternfly/react-component-groups"
+ ),
+};
diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameToUnauthorizedAccess/componentGroupsNotAuthorizedRenameToUnauthorizedAccessInput.tsx b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameToUnauthorizedAccess/componentGroupsNotAuthorizedRenameToUnauthorizedAccessInput.tsx
new file mode 100644
index 000000000..cb0fbde07
--- /dev/null
+++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameToUnauthorizedAccess/componentGroupsNotAuthorizedRenameToUnauthorizedAccessInput.tsx
@@ -0,0 +1,4 @@
+import { NotAuthorized } from "@patternfly/react-component-groups";
+
+export const ComponentGroupsNotAuthorizedRenameToUnauthorizedAccessInput =
+ () => ;
diff --git a/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameToUnauthorizedAccess/componentGroupsNotAuthorizedRenameToUnauthorizedAccessOutput.tsx b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameToUnauthorizedAccess/componentGroupsNotAuthorizedRenameToUnauthorizedAccessOutput.tsx
new file mode 100644
index 000000000..03e22d9ec
--- /dev/null
+++ b/packages/eslint-plugin-pf-codemods/src/rules/v6/componentGroupsNotAuthorizedRenameToUnauthorizedAccess/componentGroupsNotAuthorizedRenameToUnauthorizedAccessOutput.tsx
@@ -0,0 +1,4 @@
+import { UnauthorizedAccess } from "@patternfly/react-component-groups";
+
+export const ComponentGroupsNotAuthorizedRenameToUnauthorizedAccessInput =
+ () => ;