const ruleTester = require("../../ruletester");
import * as rule from "./card-updated-clickable-markup";
const baseMessage = "The markup for clickable-only cards has been updated.";
const propertyMessage =
" Additionally, the `selectableActions.selectableActionId` and `selectableActions.name` props are no longer necessary to pass to CardHeader for clickable-only cards.";
ruleTester.run("card-updated-clickable-markup", rule, {
valid: [
{
code: ``,
},
{
code: ``,
},
{
code: `import { Card } from '@patternfly/react-core'; `,
},
{
code: `import { Card } from '@patternfly/react-core'; `,
},
{
code: `import { CardHeader } from '@patternfly/react-core'; `,
},
],
invalid: [
// No invalid properties
{
code: `import { Card, CardHeader } from '@patternfly/react-core'; `,
output: `import { Card, CardHeader } from '@patternfly/react-core'; `,
errors: [
{
message: baseMessage,
type: "JSXElement",
},
],
},
// 1 valid property + 1 invalid property
{
code: `import { Card, CardHeader } from '@patternfly/react-core'; `,
output: `import { Card, CardHeader } from '@patternfly/react-core'; `,
errors: [
{
message: baseMessage + propertyMessage,
type: "JSXElement",
},
],
},
// 2 invalid properties
{
code: `import { Card, CardHeader } from '@patternfly/react-core'; `,
output: `import { Card, CardHeader } from '@patternfly/react-core'; `,
errors: [
{
message: baseMessage + propertyMessage,
type: "JSXElement",
},
],
},
// 1 valid property + 2 invalid properties
{
code: `import { Card, CardHeader } from '@patternfly/react-core'; `,
output: `import { Card, CardHeader } from '@patternfly/react-core'; `,
errors: [
{
message: baseMessage + propertyMessage,
type: "JSXElement",
},
],
},
// Passed as a variable reference
{
code: `import { Card, CardHeader } from '@patternfly/react-core'; const obj = {name: 'Test', selectableActionId: 'Id'}; `,
output: `import { Card, CardHeader } from '@patternfly/react-core'; const obj = {}; `,
errors: [
{
message: baseMessage + propertyMessage,
type: "JSXElement",
},
],
},
// Passed as a variable reference with 2 valid and 2 invalid properties
{
code: `import { Card, CardHeader } from '@patternfly/react-core'; const obj = {to: "#", name: 'Test', extra: "thing", selectableActionId: 'Id'}; `,
output: `import { Card, CardHeader } from '@patternfly/react-core'; const obj = {to: "#", extra: "thing"}; `,
errors: [
{
message: baseMessage + propertyMessage,
type: "JSXElement",
},
],
},
// Aliased
{
code: `import { Card as CustomCard, CardHeader as CustomCardHeader } from '@patternfly/react-core'; `,
output: `import { Card as CustomCard, CardHeader as CustomCardHeader } from '@patternfly/react-core'; `,
errors: [
{
message: baseMessage,
type: "JSXElement",
},
],
},
// Dist Imports
{
code: `import { Card, CardHeader } from '@patternfly/react-core/dist/esm/components/Card/index.js'; `,
output: `import { Card, CardHeader } from '@patternfly/react-core/dist/esm/components/Card/index.js'; `,
errors: [
{
message: baseMessage,
type: "JSXElement",
},
],
},
{
code: `import { Card, CardHeader } from '@patternfly/react-core/dist/js/components/Card/index.js'; `,
output: `import { Card, CardHeader } from '@patternfly/react-core/dist/js/components/Card/index.js'; `,
errors: [
{
message: baseMessage,
type: "JSXElement",
},
],
},
{
code: `import { Card, CardHeader } from '@patternfly/react-core/dist/dynamic/components/Card/index.js'; `,
output: `import { Card, CardHeader } from '@patternfly/react-core/dist/dynamic/components/Card/index.js'; `,
errors: [
{
message: baseMessage,
type: "JSXElement",
},
],
},
],
});