import { RuleTester } from "@typescript-eslint/rule-tester"; import rule, { errorMessage } from "./no-enums.mjs"; const ruleTester = new RuleTester({ languageOptions: { parserOptions: { project: [__dirname + "/../tsconfig.spec.json"], projectService: { allowDefaultProject: ["*.ts*"], }, tsconfigRootDir: __dirname + "/..", }, }, }); ruleTester.run("no-enums", rule.default, { valid: [ { name: "Using const instead of enum", code: ` const Status = { Active: "active", Inactive: "inactive", } as const; `, }, { name: "Using const with type", code: ` const Status = { Active: "active", Inactive: "inactive", } as const; type Status = typeof Status[keyof typeof Status]; `, }, ], invalid: [ { name: "Using enum declaration", code: ` enum Status { Active = "active", Inactive = "inactive", } `, errors: [ { message: errorMessage, }, ], }, { name: "Using enum with numeric values", code: ` enum Direction { Up = 1, Down = 2, Left = 3, Right = 4, } `, errors: [ { message: errorMessage, }, ], }, ], });