const ruleTester = require("../../ruletester"); import * as rule from "./menuToggle-remove-splitButtonOptions"; const message = "We have replaced `splitButtonOptions` prop on MenuToggle with `splitButtonItems`. SplitButtonOptions interface has been removed, because its `variant` prop no longer supports the 'action' option. The `items` prop of SplitButtonOptions will be passed directly to MenuToggle's new `splitButtonItems` prop."; const interfaceRemovedMessage = `The SplitButtonOptions interface has been removed.`; const generalError = { message, type: "JSXOpeningElement", }; ruleTester.run("menuToggle-remove-splitButtonOptions", rule, { valid: [ { code: ``, }, { code: `import { MenuToggle } from '@patternfly/react-core'; `, }, ], invalid: [ { // object expression with "items" property - direct value code: `import { MenuToggle } from '@patternfly/react-core'; `, output: `import { MenuToggle } from '@patternfly/react-core'; `, errors: [generalError], }, { // object expression with "items" property - in a variable code: `import { MenuToggle } from '@patternfly/react-core'; const sbItems = ["Item 1", "Item 2"]; `, output: `import { MenuToggle } from '@patternfly/react-core'; const sbItems = ["Item 1", "Item 2"]; `, errors: [generalError], }, { // identifier code: `import { MenuToggle } from '@patternfly/react-core'; import { optionsObject } from 'somewhere'; `, output: `import { MenuToggle } from '@patternfly/react-core'; import { optionsObject } from 'somewhere'; `, errors: [generalError], }, { // object expression with a spreaded object code: `import { MenuToggle } from '@patternfly/react-core'; import { optionsObject } from 'somewhere'; `, output: `import { MenuToggle } from '@patternfly/react-core'; import { optionsObject } from 'somewhere'; `, errors: [generalError], }, { // identifier + SplitButtonOptions type code: `import { MenuToggle, SplitButtonOptions } from '@patternfly/react-core'; const sbOptions: SplitButtonOptions = { items: sbItems, variant: "action" }; `, output: `import { MenuToggle, } from '@patternfly/react-core'; const sbOptions = { items: sbItems, variant: "action" }; `, errors: [ { message: interfaceRemovedMessage, type: "ImportSpecifier", }, { message: interfaceRemovedMessage, type: "Identifier", }, generalError, ], }, { // SplitButtonOptions named export code: `import { SplitButtonOptions } from '@patternfly/react-core'; export { SplitButtonOptions as SBO };`, output: ` `, errors: [ { message: interfaceRemovedMessage, type: "ImportSpecifier", }, { message: interfaceRemovedMessage, type: "ExportNamedDeclaration", }, ], }, { // SplitButtonOptions default export code: `import { SplitButtonOptions } from '@patternfly/react-core'; export default SplitButtonOptions;`, output: ` `, errors: [ { message: interfaceRemovedMessage, type: "ImportSpecifier", }, { message: interfaceRemovedMessage, type: "ExportDefaultDeclaration", }, ], }, ], });