import { RuleTester } from "@typescript-eslint/rule-tester";
import * as vitest from "vitest";
import { preferTernaryForJSXExpressions } from "../rules/preferTernaryForJSXExpressions";
RuleTester.afterAll = vitest.afterAll;
RuleTester.it = vitest.it;
RuleTester.itOnly = vitest.it.only;
RuleTester.describe = vitest.describe;
const ruleTester = new RuleTester({
parser: "@typescript-eslint/parser",
});
ruleTester.run(
"preferTernaryForJSXExpressions",
preferTernaryForJSXExpressions,
{
valid: [
{
code: "myValue ? : null",
parserOptions: { ecmaFeatures: { jsx: true } },
},
{
code: "myValue ? null : ",
parserOptions: { ecmaFeatures: { jsx: true } },
},
{
code: "myValue ? <>My Component Yo> : null",
parserOptions: { ecmaFeatures: { jsx: true } },
},
{
code: "myValue ? null : <>My Content Yo>",
parserOptions: { ecmaFeatures: { jsx: true } },
},
{
code: "myValue ? renderMyComponent() : null",
parserOptions: { ecmaFeatures: { jsx: true } },
},
{
code: "myValue ? null : renderMyComponent()",
parserOptions: { ecmaFeatures: { jsx: true } },
},
{
code: "myValue && myMagicValue ? renderMyComponent() : null",
parserOptions: { ecmaFeatures: { jsx: true } },
},
{
code: "",
parserOptions: { ecmaFeatures: { jsx: true } },
},
{
code: "renderMyComponent()",
parserOptions: { ecmaFeatures: { jsx: true } },
},
],
invalid: [
{
code: "myValue && ",
parserOptions: { ecmaFeatures: { jsx: true } },
errors: [
{
messageId: "preferTernaryForJSXExpressions",
},
],
output: "myValue ? : null",
},
{
code: "myValue && renderMyComponent()",
parserOptions: { ecmaFeatures: { jsx: true } },
errors: [
{
messageId: "preferTernaryForJSXExpressions",
},
],
output: "myValue ? renderMyComponent() : null",
},
],
}
);