Skip to content

Commit

Permalink
feat(codemod): rename InvalidObject to MissingPage
Browse files Browse the repository at this point in the history
  • Loading branch information
adamviktora committed Sep 23, 2024
1 parent e12f567 commit f182182
Show file tree
Hide file tree
Showing 7 changed files with 192 additions and 79 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,88 +6,99 @@ const renameMap = {
invalidObjectBodyText: "bodyText",
};

const errors = Object.entries(renameMap).map(([oldName, newName]) => ({
message: `The ${oldName} prop for InvalidObject 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-invalidObject-rename-props", rule, {
valid: [
const components = ["InvalidObject", "MissingPage"];

const valid = components
.map((component) => [
{
code: `<InvalidObject invalidObjectTitleText="" />`,
code: `<${component} invalidObjectTitleText="" />`,
},
{
code: `<InvalidObject invalidObjectBodyText="" />`,
code: `<${component} invalidObjectBodyText="" />`,
},
{
code: `import { InvalidObject } from '@patternfly/react-component-groups'; <InvalidObject someOtherProp />`,
code: `import { ${component} } from '@patternfly/react-component-groups'; <${component} someOtherProp />`,
},
],
invalid: [
])
.flat();

const invalid = components
.map((component) => [
{
code: `import { InvalidObject } from '@patternfly/react-component-groups';
<InvalidObject
invalidObjectTitleText="Sample title text"
invalidObjectBodyText="Sample body text"
/>`,
output: `import { InvalidObject } from '@patternfly/react-component-groups';
<InvalidObject
titleText="Sample title text"
bodyText="Sample body text"
/>`,
errors,
code: `import { ${component} } from '@patternfly/react-component-groups';
<${component}
invalidObjectTitleText="Sample title text"
invalidObjectBodyText="Sample body text"
/>`,
output: `import { ${component} } from '@patternfly/react-component-groups';
<${component}
titleText="Sample title text"
bodyText="Sample body text"
/>`,
errors: getErrors(component),
},
{
code: `import InvalidObject from '@patternfly/react-component-groups/dist/cjs/InvalidObject/index';
<InvalidObject
invalidObjectTitleText="Sample title text"
invalidObjectBodyText="Sample body text"
/>`,
output: `import InvalidObject from '@patternfly/react-component-groups/dist/cjs/InvalidObject/index';
<InvalidObject
titleText="Sample title text"
bodyText="Sample body text"
/>`,
errors,
code: `import ${component} from '@patternfly/react-component-groups/dist/cjs/${component}/index';
<${component}
invalidObjectTitleText="Sample title text"
invalidObjectBodyText="Sample body text"
/>`,
output: `import ${component} from '@patternfly/react-component-groups/dist/cjs/${component}/index';
<${component}
titleText="Sample title text"
bodyText="Sample body text"
/>`,
errors: getErrors(component),
},
{
code: `import InvalidObject from '@patternfly/react-component-groups/dist/esm/InvalidObject/index';
<InvalidObject
invalidObjectTitleText="Sample title text"
invalidObjectBodyText="Sample body text"
/>`,
output: `import InvalidObject from '@patternfly/react-component-groups/dist/esm/InvalidObject/index';
<InvalidObject
titleText="Sample title text"
bodyText="Sample body text"
/>`,
errors,
code: `import ${component} from '@patternfly/react-component-groups/dist/esm/${component}/index';
<${component}
invalidObjectTitleText="Sample title text"
invalidObjectBodyText="Sample body text"
/>`,
output: `import ${component} from '@patternfly/react-component-groups/dist/esm/${component}/index';
<${component}
titleText="Sample title text"
bodyText="Sample body text"
/>`,
errors: getErrors(component),
},
{
code: `import InvalidObject from '@patternfly/react-component-groups/dist/dynamic/InvalidObject';
<InvalidObject
invalidObjectTitleText="Sample title text"
invalidObjectBodyText="Sample body text"
/>`,
output: `import InvalidObject from '@patternfly/react-component-groups/dist/dynamic/InvalidObject';
<InvalidObject
titleText="Sample title text"
bodyText="Sample body text"
/>`,
errors,
code: `import ${component} from '@patternfly/react-component-groups/dist/dynamic/${component}';
<${component}
invalidObjectTitleText="Sample title text"
invalidObjectBodyText="Sample body text"
/>`,
output: `import ${component} from '@patternfly/react-component-groups/dist/dynamic/${component}';
<${component}
titleText="Sample title text"
bodyText="Sample body text"
/>`,
errors: getErrors(component),
},
{
code: `import InvObj from '@patternfly/react-component-groups/dist/dynamic/InvalidObject';
<InvObj
invalidObjectTitleText="Sample title text"
invalidObjectBodyText="Sample body text"
/>`,
output: `import InvObj from '@patternfly/react-component-groups/dist/dynamic/InvalidObject';
<InvObj
titleText="Sample title text"
bodyText="Sample body text"
/>`,
errors,
code: `import InvObj from '@patternfly/react-component-groups/dist/dynamic/${component}';
<InvObj
invalidObjectTitleText="Sample title text"
invalidObjectBodyText="Sample body text"
/>`,
output: `import InvObj from '@patternfly/react-component-groups/dist/dynamic/${component}';
<InvObj
titleText="Sample title text"
bodyText="Sample body text"
/>`,
errors: getErrors(component),
},
],
])
.flat();

ruleTester.run("component-groups-invalidObject-rename-props", rule, {
valid,
invalid,
});
Original file line number Diff line number Diff line change
Expand Up @@ -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 InvalidObject 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 = {
InvalidObject: {
invalidObjectTitleText: {
newName: "titleText",
message: formatMessage("invalidObjectTitleText", "titleText"),
},
invalidObjectBodyText: {
newName: "bodyText",
message: formatMessage("invalidObjectBodyText", "bodyText"),
},
const getPropsRenames = (component: string) => ({
invalidObjectTitleText: {
newName: "titleText",
message: formatMessage(component, "invalidObjectTitleText", "titleText"),
},
invalidObjectBodyText: {
newName: "bodyText",
message: formatMessage(component, "invalidObjectBodyText", "bodyText"),
},
});

const renames: Renames = {
InvalidObject: getPropsRenames("InvalidObject"),
MissingPage: getPropsRenames("MissingPage"),
};

module.exports = {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
### component-groups-invalidObject-rename-to-missingPage [(react-component-groups/#313)](https://github.com/patternfly/react-component-groups/pull/313)

In react-component-groups, we've renamed InvalidObject component to MissingPage

#### Examples

In:

```jsx
%inputExample%
```

Out:

```jsx
%outputExample%
```

Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
const ruleTester = require("../../ruletester");
import * as rule from "./component-groups-invalidObject-rename-to-missingPage";

const errors = [
{
message: `InvalidObject has been renamed to MissingPage.`,
type: "JSXOpeningElement",
},
];

ruleTester.run("component-groups-invalidObject-rename-to-missingPage", rule, {
valid: [
// missing import
{
code: `<InvalidObject />`,
},
// import from wrong package
{
code: `import { InvalidObject } from '@patternfly/react-core'; <InvalidObject />`,
},
],
invalid: [
{
code: `import { InvalidObject } from '@patternfly/react-component-groups'; <InvalidObject />`,
output: `import { MissingPage } from '@patternfly/react-component-groups'; <MissingPage data-codemods />`,
errors,
},
// named import with alias
{
code: `import { InvalidObject as InvObj } from '@patternfly/react-component-groups'; <InvObj />`,
output: `import { MissingPage as InvObj } from '@patternfly/react-component-groups'; <InvObj />`,
errors,
},
// default imports
{
code: `import InvalidObject from '@patternfly/react-component-groups/dist/cjs/InvalidObject/index'; <InvalidObject />`,
output: `import MissingPage from '@patternfly/react-component-groups/dist/cjs/MissingPage/index'; <MissingPage data-codemods />`,
errors,
},
{
code: `import InvalidObject from '@patternfly/react-component-groups/dist/esm/InvalidObject/index'; <InvalidObject />`,
output: `import MissingPage from '@patternfly/react-component-groups/dist/esm/MissingPage/index'; <MissingPage data-codemods />`,
errors,
},
{
code: `import InvalidObject from '@patternfly/react-component-groups/dist/dynamic/InvalidObject'; <InvalidObject />`,
output: `import MissingPage from '@patternfly/react-component-groups/dist/dynamic/MissingPage'; <MissingPage data-codemods />`,
errors,
},
// default import with name not matching the component name
{
code: `import InvObj from '@patternfly/react-component-groups/dist/dynamic/InvalidObject'; <InvObj />`,
output: `import InvObj from '@patternfly/react-component-groups/dist/dynamic/MissingPage'; <InvObj />`,
errors,
},
],
});
Original file line number Diff line number Diff line change
@@ -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(
{
InvalidObject: "MissingPage",
},
"@patternfly/react-component-groups"
),
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { InvalidObject } from "@patternfly/react-component-groups";

export const ComponentGroupsInvalidObjectRenameToMissingPageInput =
() => <InvalidObject />;
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { MissingPage } from "@patternfly/react-component-groups";

export const ComponentGroupsInvalidObjectRenameToMissingPageInput =
() => <MissingPage data-codemods />;

0 comments on commit f182182

Please sign in to comment.