From 9a4999e7a18b9086741eaa560de4b31350504a87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n=20Alarc=C3=B3n?= Date: Sun, 19 Sep 2021 19:09:48 +0200 Subject: [PATCH 1/5] chore(eslint): install missing dependency --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 0a59a6b7..979b9b4e 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "@typescript-eslint/experimental-utils": "^4.30.0" }, "devDependencies": { + "@babel/eslint-plugin": "^7.14.5", "@commitlint/cli": "^12.1.4", "@commitlint/config-conventional": "^12.1.4", "@types/jest": "^27.0.1", From 70c06c68bd9a25a42c60823b9d375a8fdc464d87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n=20Alarc=C3=B3n?= Date: Sun, 19 Sep 2021 19:24:52 +0200 Subject: [PATCH 2/5] test(prefer-explicit-assert): add case for incomplete expect --- tests/lib/rules/prefer-explicit-assert.test.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/lib/rules/prefer-explicit-assert.test.ts b/tests/lib/rules/prefer-explicit-assert.test.ts index e894e232..27077567 100644 --- a/tests/lib/rules/prefer-explicit-assert.test.ts +++ b/tests/lib/rules/prefer-explicit-assert.test.ts @@ -160,6 +160,14 @@ ruleTester.run(RULE_NAME, rule, { }, ], })), + { + // https://github.com/testing-library/eslint-plugin-testing-library/issues/475 + code: ` + // incomplete expect statement should be ignored + expect('something'); + expect(getByText('foo')); + `, + }, ], invalid: [ ...COMBINED_QUERIES_METHODS.map( From 1af40dbc73434fef8e7d95b50758dbbbaff78528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n=20Alarc=C3=B3n?= Date: Sun, 19 Sep 2021 19:30:13 +0200 Subject: [PATCH 3/5] test(prefer-explicit-assert): add case for incomplete expect --- tests/lib/rules/prefer-explicit-assert.test.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/lib/rules/prefer-explicit-assert.test.ts b/tests/lib/rules/prefer-explicit-assert.test.ts index 27077567..08dd5fb8 100644 --- a/tests/lib/rules/prefer-explicit-assert.test.ts +++ b/tests/lib/rules/prefer-explicit-assert.test.ts @@ -167,6 +167,11 @@ ruleTester.run(RULE_NAME, rule, { expect('something'); expect(getByText('foo')); `, + options: [ + { + assertion: 'toBeInTheDocument', + }, + ], }, ], invalid: [ From c67e6924201826982273a0a0263a891105586a86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n=20Alarc=C3=B3n?= Date: Sun, 19 Sep 2021 19:44:29 +0200 Subject: [PATCH 4/5] fix(prefer-explicit-assert): check property existence --- lib/rules/prefer-explicit-assert.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/rules/prefer-explicit-assert.ts b/lib/rules/prefer-explicit-assert.ts index a261b17f..c0fc0023 100644 --- a/lib/rules/prefer-explicit-assert.ts +++ b/lib/rules/prefer-explicit-assert.ts @@ -158,7 +158,17 @@ export default createTestingLibraryRule({ const expectStatement = expectCallNode.parent as TSESTree.MemberExpression; - const property = expectStatement.property as TSESTree.Identifier; + + if (!isMemberExpression(expectStatement)) { + return; + } + + const property = expectStatement.property; + + if (!ASTUtils.isIdentifier(property)) { + return; + } + let matcher = property.name; let isNegatedMatcher = false; From 64e636260d988594d96d58ea401f02a651793827 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n=20Alarc=C3=B3n?= Date: Sun, 19 Sep 2021 19:47:41 +0200 Subject: [PATCH 5/5] refactor: remove unnecessary as statement --- lib/rules/prefer-explicit-assert.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/rules/prefer-explicit-assert.ts b/lib/rules/prefer-explicit-assert.ts index c0fc0023..86e1f4ed 100644 --- a/lib/rules/prefer-explicit-assert.ts +++ b/lib/rules/prefer-explicit-assert.ts @@ -156,9 +156,7 @@ export default createTestingLibraryRule({ const expectCallNode = findClosestCallNode(node, 'expect'); if (!expectCallNode) return; - const expectStatement = - expectCallNode.parent as TSESTree.MemberExpression; - + const expectStatement = expectCallNode.parent; if (!isMemberExpression(expectStatement)) { return; }