const ruleTester = require("../../ruletester");
import * as rule from "./component-groups-unavailableContent-bodyText-props-update";
const renameMessage =
"In react-component-groups, we have replaced UnavailableContent's props `unavailableBodyPreStatusLinkText` and `unavailableBodyPostStatusLinkText` with one `bodyText` prop.";
const statusPageMessage =
"In react-component-groups, UnavailableContent's status page link button has changed to a primary button. Consider capitalizing the `statusPageLinkText` prop.";
const defaultPreStatusText =
"Try refreshing the page. If the problem persists, contact your organization administrator or visit our";
const defaultPostStatusText = "for known outages.";
const defaultStatusText = "status page";
ruleTester.run("componentGroupsUnavailableContentBodyTextPropsUpdate", rule, {
valid: [
{
code: ``,
},
{
code: `import { UnavailableContent } from '@patternfly/react-component-groups'; `,
},
// default import but folder not specified
{
code: `import UnavailableContent from '@patternfly/react-component-groups'; `,
},
],
invalid: [
// with both pre and post status link text, default statusPageLinkText
{
code: `import { UnavailableContent } from '@patternfly/react-component-groups';
`,
output: `import { UnavailableContent } from '@patternfly/react-component-groups';
`,
errors: [
{
message: renameMessage,
type: "JSXOpeningElement",
},
],
},
// with only pre status link text, default statusPageLinkText
{
code: `import { UnavailableContent } from '@patternfly/react-component-groups';
`,
output: `import { UnavailableContent } from '@patternfly/react-component-groups';
`,
errors: [
{
message: renameMessage,
type: "JSXOpeningElement",
},
],
},
// with only post status link text, default statusPageLinkText
{
code: `import { UnavailableContent } from '@patternfly/react-component-groups';
`,
output: `import { UnavailableContent } from '@patternfly/react-component-groups';
`,
errors: [
{
message: renameMessage,
type: "JSXOpeningElement",
},
],
},
// with custom statusPageLinkText
{
code: `import { UnavailableContent } from '@patternfly/react-component-groups';
`,
output: `import { UnavailableContent } from '@patternfly/react-component-groups';
`,
errors: [
{
message: statusPageMessage,
type: "JSXOpeningElement",
},
],
},
// with custom statusPageLinkText in a variable
{
code: `import { UnavailableContent } from '@patternfly/react-component-groups';
const statusPageLinkText = "custom status page";
`,
output: `import { UnavailableContent } from '@patternfly/react-component-groups';
const statusPageLinkText = "custom status page";
`,
errors: [
{
message: statusPageMessage,
type: "JSXOpeningElement",
},
],
},
// with both pre and post status link text, custom statusPageLinkText
{
code: `import { UnavailableContent } from '@patternfly/react-component-groups';
`,
output: `import { UnavailableContent } from '@patternfly/react-component-groups';
`,
errors: [
{
message: statusPageMessage,
type: "JSXOpeningElement",
},
{
message: renameMessage,
type: "JSXOpeningElement",
},
],
},
// default import
{
code: `import UC from '@patternfly/react-component-groups/dist/dynamic/UnavailableContent';
`,
output: `import UC from '@patternfly/react-component-groups/dist/dynamic/UnavailableContent';
`,
errors: [
{
message: statusPageMessage,
type: "JSXOpeningElement",
},
],
},
],
});