const ruleTester = require("../../ruletester");
import * as rule from "./card-remove-various-props";
interface InvalidTest {
code: string;
output: string;
errors: { message: string }[];
}
const removedBooleanProps = [
"isSelectableRaised",
"isDisabledRaised",
"hasSelectableInput",
"isFlat",
"isRounded",
];
const removedStringProps = ["selectableInputAriaLabel"];
const removedFunctionProps = ["onSelectableInputChange"];
const removedBooleanPropTests = removedBooleanProps.map((prop) => ({
code: `import { Card } from '@patternfly/react-core'; `,
output: `import { Card } from '@patternfly/react-core'; `,
errors: [{ message: `The ${prop} prop has been removed` }],
}));
const removedStringPropTests = removedStringProps.reduce((acc, prop) => {
return [
...acc,
{
code: `import { Card } from '@patternfly/react-core'; `,
output: `import { Card } from '@patternfly/react-core'; `,
errors: [{ message: `The ${prop} prop has been removed` }],
},
{
code: `import { Card } from '@patternfly/react-core'; const foo = "foo bar"; `,
output: `import { Card } from '@patternfly/react-core'; const foo = "foo bar"; `,
errors: [{ message: `The ${prop} prop has been removed` }],
},
];
}, [] as InvalidTest[]);
const removedFunctionPropTests = removedFunctionProps.reduce((acc, prop) => {
return [
...acc,
{
code: `import { Card } from '@patternfly/react-core'; {}} />`,
output: `import { Card } from '@patternfly/react-core'; `,
errors: [{ message: `The ${prop} prop has been removed` }],
},
{
code: `import { Card } from '@patternfly/react-core'; const foo = () => {}; `,
output: `import { Card } from '@patternfly/react-core'; const foo = () => {}; `,
errors: [{ message: `The ${prop} prop has been removed` }],
},
{
code: `import { Card } from '@patternfly/react-core'; function foo() {}; `,
output: `import { Card } from '@patternfly/react-core'; function foo() {}; `,
errors: [{ message: `The ${prop} prop has been removed` }],
},
];
}, [] as InvalidTest[]);
ruleTester.run("card-remove-various-props", rule, {
valid: [
{
code: ` {}} isFlat isRounded />`,
},
{
code: `import { Card } from '@patternfly/react-core'; `,
},
],
invalid: [
...removedBooleanPropTests,
...removedStringPropTests,
...removedFunctionPropTests,
],
});