const ruleTester = require("../../ruletester"); import * as rule from "./toolbar-remove-props"; import { ValidTests, InvalidTests, createInvalidTest, createValidTest, } from "../../helpers/testHelpers"; const renames: { [key: string]: { [key: string]: string } } = { Toolbar: { usePageInsets: "", }, ToolbarContent: { alignSelf: "", }, ToolbarItem: { widths: "", }, ToolbarToggleGroup: { alignment: "", }, }; const validTests: ValidTests = []; const invalidTests: InvalidTests = []; for (const component in renames) { for (const oldProp in renames[component]) { validTests.push(createValidTest(`<${component} ${oldProp} />`)); validTests.push( createValidTest( `import { ${component} } from '@patternfly/react-core'; <${component} someOtherProp />` ) ); const createMessage = (name: string = component) => `${oldProp} prop for ${name} has been removed`; invalidTests.push( createInvalidTest( `import { ${component} } from '@patternfly/react-core'; <${component} ${oldProp} />`, `import { ${component} } from '@patternfly/react-core'; <${component} />`, [ { message: createMessage(), type: "JSXOpeningElement", }, ] ) ); invalidTests.push( createInvalidTest( `import { ${component} } from '@patternfly/react-core'; <${component} ${oldProp}="test" />`, `import { ${component} } from '@patternfly/react-core'; <${component} />`, [ { message: createMessage(), type: "JSXOpeningElement", }, ] ) ); invalidTests.push( createInvalidTest( `import { ${component} as CustomThing } from '@patternfly/react-core'; `, `import { ${component} as CustomThing } from '@patternfly/react-core'; `, [ { message: createMessage("CustomThing"), type: "JSXOpeningElement", }, ] ) ); invalidTests.push( createInvalidTest( `import { ${component} } from '@patternfly/react-core/dist/esm/components/Toolbar/index.js'; <${component} ${oldProp} />`, `import { ${component} } from '@patternfly/react-core/dist/esm/components/Toolbar/index.js'; <${component} />`, [ { message: createMessage(), type: "JSXOpeningElement", }, ] ) ); invalidTests.push( createInvalidTest( `import { ${component} } from '@patternfly/react-core/dist/js/components/Toolbar/index.js'; <${component} ${oldProp} />`, `import { ${component} } from '@patternfly/react-core/dist/js/components/Toolbar/index.js'; <${component} />`, [ { message: createMessage(), type: "JSXOpeningElement", }, ] ) ); invalidTests.push( createInvalidTest( `import { ${component} } from '@patternfly/react-core/dist/dynamic/components/Toolbar/index.js'; <${component} ${oldProp} />`, `import { ${component} } from '@patternfly/react-core/dist/dynamic/components/Toolbar/index.js'; <${component} />`, [ { message: createMessage(), type: "JSXOpeningElement", }, ] ) ); } } ruleTester.run("toolbar-remove-props", rule, { valid: validTests, invalid: invalidTests, });