import { RuleTester } from "./support/RuleTester"; import rule = require("../rules/only-arrow-functions"); const ruleTester = new RuleTester({ parserOptions: { warnOnUnsupportedTypeScriptVersion: false, }, parser: require.resolve("@typescript-eslint/parser"), }); ruleTester.run("only-arrow-functions", rule, { valid: [{ code: `const a = () => {};`, }, { code: `((func) => func())(() => {});`, }, { code: `function* generator() {}`, }, { code: `let generator = function*() {}`, }, { code: `function hasThisParameter(this) {}`, }, { code: `let hasThisParameter = function(this) {}`, }, { code: `let usesThis = function() { this; }`, }, { code: `let usesThis2 = function(foo = this) {}`, }, { code: ` let fn = function fn() {}; function z() {}; `, options: [{ allowNamedFunctions: true }], }, { code: ` function fn() {}; let generator = function*() {} function hasThisParameter(this) {} let hasThisParameter = function(this) {} `, options: [{ allowDeclarations: true }], }, { code: ` class A { test() {} } `, }, { code: ` const obj = { test() {} } `, }], invalid: [{ code: `function foo(a: any): any {}`, errors: [{ messageId: "onlyArrowFunctionsError" }], }, { code: `let b = function () {};`, errors: [{ messageId: "onlyArrowFunctionsError" }], }, { code: `function c() {}`, errors: [{ messageId: "onlyArrowFunctionsError" }], }, { code: `((func) => func())(function e(): void {});`, errors: [{ messageId: "onlyArrowFunctionsError" }], }, { code: ` let notUsesThis = function() { function f() { this; } } `, errors: [{ messageId: "onlyArrowFunctionsError" }], }, { code: ` let notUsesThis2 = function() { return class { method() { this; } } } `, errors: [{ messageId: "onlyArrowFunctionsError" }], }, { code: `export function exported() {}`, errors: [{ messageId: "onlyArrowFunctionsError" }], }, { code: `async function asyncFunction() {}`, errors: [{ messageId: "onlyArrowFunctionsError" }], }, { code: ` let b = function () {}; ((func) => func())(function e(): void {}); `, options: [{ allowDeclarations: true }], errors: [{ messageId: "onlyArrowFunctionsError" }, { messageId: "onlyArrowFunctionsError" }], }, { code: `const x = function() {}`, options: [{ allowNamedFunctions: true }], errors: [{ messageId: "onlyArrowFunctionsError" }], }], });