diff --git a/src/rules/__tests__/no-test-return-statement.test.js b/src/rules/__tests__/no-test-return-statement.test.ts similarity index 83% rename from src/rules/__tests__/no-test-return-statement.test.js rename to src/rules/__tests__/no-test-return-statement.test.ts index 451ef4391..fb593be04 100644 --- a/src/rules/__tests__/no-test-return-statement.test.js +++ b/src/rules/__tests__/no-test-return-statement.test.ts @@ -1,7 +1,9 @@ -import { RuleTester } from 'eslint'; +import { TSESLint } from '@typescript-eslint/experimental-utils'; import rule from '../no-test-return-statement'; -const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 2015 } }); +const ruleTester = new TSESLint.RuleTester({ + parserOptions: { ecmaVersion: 2015 }, +}); ruleTester.run('no-test-prefixes', rule, { valid: [ diff --git a/src/rules/no-test-return-statement.js b/src/rules/no-test-return-statement.ts similarity index 51% rename from src/rules/no-test-return-statement.js rename to src/rules/no-test-return-statement.ts index 33201b454..708557114 100644 --- a/src/rules/no-test-return-statement.js +++ b/src/rules/no-test-return-statement.ts @@ -1,29 +1,38 @@ -import { getDocsUrl, isFunction, isTestCase } from './util'; +import { createRule, isFunction, isTestCase } from './tsUtils'; +import { TSESTree } from '@typescript-eslint/experimental-utils'; const RETURN_STATEMENT = 'ReturnStatement'; const BLOCK_STATEMENT = 'BlockStatement'; -const getBody = args => { +const getBody = (args: TSESTree.Expression[]) => { + const [, secondArg] = args; + if ( - args.length > 1 && - isFunction(args[1]) && - args[1].body.type === BLOCK_STATEMENT + secondArg && + isFunction(secondArg) && + secondArg.body && + secondArg.body.type === BLOCK_STATEMENT ) { - return args[1].body.body; + return secondArg.body.body; } return []; }; -export default { +export default createRule({ + name: __filename, meta: { docs: { - url: getDocsUrl(__filename), + category: 'Best Practices', + description: 'Disallow explicitly returning from tests', + recommended: false, }, messages: { noReturnValue: 'Jest tests should not return a value.', }, schema: [], + type: 'suggestion', }, + defaultOptions: [], create(context) { return { CallExpression(node) { @@ -36,4 +45,4 @@ export default { }, }; }, -}; +});