const ruleTester = require("../../ruletester");
import * as rule from "./toolbarGroup-updated-variant";
import {
ValidTests,
InvalidTests,
createInvalidTest,
createValidTest,
} from "../../helpers/testHelpers";
const applicableComponents = ["ToolbarGroup", "ToolbarToggleGroup"];
const renames = {
"button-group": "action-group",
"icon-button-group": "action-group-plain",
};
const oldVariantNames = Object.keys(renames) as (
| "button-group"
| "icon-button-group"
)[];
const validTests: ValidTests = [];
const invalidTests: InvalidTests = [];
for (const component of applicableComponents) {
for (const oldName of oldVariantNames) {
const newName = renames[oldName];
validTests.push(createValidTest(``));
validTests.push(
createValidTest(
`import { ToolbarGroup } from '@patternfly/react-core'; `
)
);
const message = `The \`${oldName}\` variant of ${component} has been renamed to \`${newName}\`.`;
const errorObject = {
message,
type: "JSXOpeningElement",
};
invalidTests.push(
createInvalidTest(
`import { ${component} } from '@patternfly/react-core'; <${component} variant="${oldName}" />`,
`import { ${component} } from '@patternfly/react-core'; <${component} variant="${newName}" />`,
[errorObject]
)
);
invalidTests.push(
createInvalidTest(
`import { ${component} as CustomThing } from '@patternfly/react-core'; `,
`import { ${component} as CustomThing } from '@patternfly/react-core'; `,
[errorObject]
)
);
invalidTests.push(
createInvalidTest(
`import { ${component}, ToolbarGroupVariant } from '@patternfly/react-core'; <${component} variant={ToolbarGroupVariant["${oldName}"]} />`,
`import { ${component}, ToolbarGroupVariant } from '@patternfly/react-core'; <${component} variant={ToolbarGroupVariant["${newName}"]} />`,
[errorObject]
)
);
invalidTests.push(
createInvalidTest(
`import { ${component}, ToolbarGroupVariant } from '@patternfly/react-core';
const variant = ToolbarGroupVariant["${oldName}"]; <${component} variant={variant} />`,
`import { ${component}, ToolbarGroupVariant } from '@patternfly/react-core';
const variant = ToolbarGroupVariant["${newName}"]; <${component} variant={variant} />`,
[errorObject]
)
);
invalidTests.push(
createInvalidTest(
`import { ${component}, ToolbarGroupVariant as CustomThing } from '@patternfly/react-core'; <${component} variant={CustomThing["${oldName}"]} />`,
`import { ${component}, ToolbarGroupVariant as CustomThing } from '@patternfly/react-core'; <${component} variant={CustomThing["${newName}"]} />`,
[errorObject]
)
);
invalidTests.push(
createInvalidTest(
`import { ${component} as CustomGroup, ToolbarGroupVariant as CustomThing } from '@patternfly/react-core'; `,
`import { ${component} as CustomGroup, ToolbarGroupVariant as CustomThing } from '@patternfly/react-core'; `,
[errorObject]
)
);
invalidTests.push(
createInvalidTest(
`import { ${component}, ToolbarGroupVariant } from '@patternfly/react-core/dist/esm/components/Toolbar/index.js'; <${component} variant={ToolbarGroupVariant["${oldName}"]} />`,
`import { ${component}, ToolbarGroupVariant } from '@patternfly/react-core/dist/esm/components/Toolbar/index.js'; <${component} variant={ToolbarGroupVariant["${newName}"]} />`,
[errorObject]
)
);
invalidTests.push(
createInvalidTest(
`import { ${component}, ToolbarGroupVariant } from '@patternfly/react-core/dist/js/components/Toolbar/index.js'; <${component} variant={ToolbarGroupVariant["${oldName}"]} />`,
`import { ${component}, ToolbarGroupVariant } from '@patternfly/react-core/dist/js/components/Toolbar/index.js'; <${component} variant={ToolbarGroupVariant["${newName}"]} />`,
[errorObject]
)
);
invalidTests.push(
createInvalidTest(
`import { ${component}, ToolbarGroupVariant } from '@patternfly/react-core/dist/dynamic/components/Toolbar/index.js'; <${component} variant={ToolbarGroupVariant["${oldName}"]} />`,
`import { ${component}, ToolbarGroupVariant } from '@patternfly/react-core/dist/dynamic/components/Toolbar/index.js'; <${component} variant={ToolbarGroupVariant["${newName}"]} />`,
[errorObject]
)
);
}
}
ruleTester.run("toolbarGroup-updated-iconButtonGroup-variant", rule, {
valid: validTests,
invalid: invalidTests,
});