import { RuleTester } from "@typescript-eslint/rule-tester"; import rule, { errorMessage } from "./required-using.mjs"; const ruleTester = new RuleTester({ languageOptions: { parserOptions: { project: [__dirname + "/../tsconfig.spec.json"], projectService: { allowDefaultProject: ["*.ts*"], }, tsconfigRootDir: __dirname + "/..", }, }, }); const setup = ` interface UsingRequired {} class Ref implements UsingRequired {} const rc = { take(): Ref { return new Ref(); }, }; `; ruleTester.run("required-using", rule.default, { valid: [ { name: "Direct declaration with `using`", code: ` ${setup} using client = rc.take(); `, }, // { // name: "Function reference with `using`", // code: ` // ${setup} // const t = rc.take; // using client = t(); // `, // }, ], invalid: [ { name: "Direct declaration without `using`", code: ` ${setup} const client = rc.take(); `, errors: [ { message: errorMessage, }, ], }, // { // name: "Assignment without `using`", // code: ` // ${setup} // let client; // client = rc.take(); // `, // errors: [ // { // message: errorMessage, // }, // ], // }, // { // name: "Function reference without `using`", // code: ` // ${setup} // const t = rc.take; // const client = t(); // `, // errors: [ // { // message: errorMessage, // }, // ], // }, // { // name: "Destructuring without `using`", // code: ` // ${setup} // const { value } = rc.take(); // `, // errors: [ // { // message: errorMessage, // }, // ], // }, ], });