From 089a0373cc4945e8755397c6c19f80ed77eb31d5 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Mon, 29 Aug 2022 08:42:56 +1200 Subject: [PATCH] fix(prefer-expect-assertions): report on concise arrow functions with `expect` call --- .../prefer-expect-assertions.test.ts | 22 +++++++++++++++++++ src/rules/prefer-expect-assertions.ts | 11 +++++----- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/rules/__tests__/prefer-expect-assertions.test.ts b/src/rules/__tests__/prefer-expect-assertions.test.ts index 6b5a4e207..40379e11d 100644 --- a/src/rules/__tests__/prefer-expect-assertions.test.ts +++ b/src/rules/__tests__/prefer-expect-assertions.test.ts @@ -115,6 +115,28 @@ ruleTester.run('prefer-expect-assertions', rule, { }, ], }, + { + code: "it('resolves', () => expect(staged()).toBe(true));", + errors: [ + { + messageId: 'haveExpectAssertions', + column: 1, + line: 1, + suggestions: null, + }, + ], + }, + { + code: "it('resolves', async () => expect(await staged()).toBe(true));", + errors: [ + { + messageId: 'haveExpectAssertions', + column: 1, + line: 1, + suggestions: null, + }, + ], + }, { code: 'it("it1", () => {})', errors: [ diff --git a/src/rules/prefer-expect-assertions.ts b/src/rules/prefer-expect-assertions.ts index 25192e4ef..0bc1f9bf8 100644 --- a/src/rules/prefer-expect-assertions.ts +++ b/src/rules/prefer-expect-assertions.ts @@ -16,6 +16,12 @@ const isFirstStatement = (node: TSESTree.CallExpression): boolean => { return parent.parent.body[0] === parent; } + // if we've hit an arrow function, then it must have a single expression + // as its body, as otherwise we would have hit the block statement already + if (parent.parent?.type === AST_NODE_TYPES.ArrowFunctionExpression) { + return true; + } + parent = parent.parent; } @@ -52,11 +58,6 @@ type MessageIds = | 'suggestAddingAssertions' | 'suggestRemovingExtraArguments'; -// const suggestions: Array<[MessageIds, string]> = [ -// ['suggestAddingHasAssertions', 'expect.hasAssertions();'], -// ['suggestAddingAssertions', 'expect.assertions();'], -// ]; - export default createRule<[RuleOptions], MessageIds>({ name: __filename, meta: {