const ruleTester = require("../../ruletester"); import * as rule from "./text-replace-with-content"; const errorMessage = `We have replaced Text, TextContent, TextList and TextListItem with one Content component. Running this fix will change all of those components names to Content and add a \`component\` prop where necessary.`; const importDeclarationError = { message: errorMessage, type: "ImportDeclaration", }; const jsxOpeningElementError = { message: errorMessage, type: "JSXOpeningElement", }; const jsxClosingElementError = { message: errorMessage, type: "JSXClosingElement", }; const identifierError = { message: errorMessage, type: "Identifier", }; ruleTester.run("text-replace-with-content", rule, { valid: [ { code: ``, }, { code: `import { Text } from 'somewhere'; `, }, ], invalid: [ { code: `import { Text } from '@patternfly/react-core'; Abc`, output: `import { Content } from '@patternfly/react-core'; Abc`, errors: [ importDeclarationError, jsxOpeningElementError, jsxClosingElementError, ], }, { code: `import { Text } from '@patternfly/react-core'; Abc`, output: `import { Content } from '@patternfly/react-core'; Abc`, errors: [ importDeclarationError, jsxOpeningElementError, jsxClosingElementError, ], }, { code: `import { Text, TextContent } from '@patternfly/react-core'; Abc `, output: `import { Content, TextContent } from '@patternfly/react-core'; Abc `, errors: [ importDeclarationError, jsxOpeningElementError, jsxOpeningElementError, jsxClosingElementError, jsxClosingElementError, ], }, { code: `import { TextContent } from '@patternfly/react-core'; `, output: `import { Content } from '@patternfly/react-core'; `, errors: [ importDeclarationError, jsxOpeningElementError, jsxClosingElementError, ], }, { code: `import { TextList, TextListItem } from '@patternfly/react-core'; A B C `, output: `import { Content, TextListItem } from '@patternfly/react-core'; A B C `, errors: [ importDeclarationError, jsxOpeningElementError, jsxOpeningElementError, jsxClosingElementError, jsxOpeningElementError, jsxClosingElementError, jsxOpeningElementError, jsxClosingElementError, jsxClosingElementError, ], }, { code: `import { TextList, TextListItem } from '@patternfly/react-core'; A letter A B letter B `, output: `import { Content, TextListItem } from '@patternfly/react-core'; A letter A B letter B `, errors: [ importDeclarationError, jsxOpeningElementError, jsxOpeningElementError, jsxClosingElementError, jsxOpeningElementError, jsxClosingElementError, jsxOpeningElementError, jsxClosingElementError, jsxOpeningElementError, jsxClosingElementError, jsxClosingElementError, ], }, { code: `import { TextList } from '@patternfly/react-core'; `, output: `import { Content } from '@patternfly/react-core'; `, errors: [ importDeclarationError, jsxOpeningElementError, jsxClosingElementError, ], }, { code: `import { TextVariants } from '@patternfly/react-core'; const foo = TextVariants.h1`, output: `import { ContentVariants } from '@patternfly/react-core'; const foo = ContentVariants.h1`, errors: [importDeclarationError, identifierError], }, { code: `import { TextListVariants } from '@patternfly/react-core'; const foo = TextListVariants.ul`, output: `import { ContentVariants } from '@patternfly/react-core'; const foo = ContentVariants.ul`, errors: [importDeclarationError, identifierError], }, { code: `import { TextListItemVariants } from '@patternfly/react-core'; const foo = TextListItemVariants.li`, output: `import { ContentVariants } from '@patternfly/react-core'; const foo = ContentVariants.li`, errors: [importDeclarationError, identifierError], }, // phase one of passing an enum directly as a prop { code: `import { TextListItem, TextListItemVariants } from '@patternfly/react-core'; Abc`, output: `import { Content, TextListItemVariants } from '@patternfly/react-core'; Abc`, errors: [ importDeclarationError, jsxOpeningElementError, identifierError, jsxClosingElementError, ], }, // phase two of passing an enum directly as a prop { code: `import { Content, TextListItemVariants } from '@patternfly/react-core'; Abc`, output: `import { Content, ContentVariants } from '@patternfly/react-core'; Abc`, errors: [importDeclarationError], }, { code: `import { TextProps } from '@patternfly/react-core'; interface Foo extends TextProps {}`, output: `import { ContentProps } from '@patternfly/react-core'; interface Foo extends ContentProps {}`, errors: [importDeclarationError, identifierError], }, // with alias { code: `import { Text as PFText } from '@patternfly/react-core'; Abc`, output: `import { Content } from '@patternfly/react-core'; Abc`, errors: [ importDeclarationError, jsxOpeningElementError, jsxClosingElementError, ], }, // dist import path (Text, TextContent, TextList and TextListItem are all under "Text") { code: `import { Text } from '@patternfly/react-core/dist/dynamic/components/Text';`, output: `import { Content } from "@patternfly/react-core/dist/dynamic/components/Content";`, errors: [importDeclarationError], }, ], }); /* -> -> -> -> -> -> -> -> -> */