eslint-plugin-testing-library
Advanced tools
Comparing version 4.11.0 to 4.12.0
{ | ||
"name": "eslint-plugin-testing-library", | ||
"version": "4.11.0", | ||
"version": "4.12.0", | ||
"description": "ESLint rules for Testing Library", | ||
@@ -50,25 +50,25 @@ "keywords": [ | ||
"@commitlint/config-conventional": "^12.1.4", | ||
"@types/jest": "^26.0.23", | ||
"@types/jest": "^27.0.1", | ||
"@types/node": "^10.17.60", | ||
"@typescript-eslint/eslint-plugin": "^4.26.1", | ||
"@typescript-eslint/parser": "^4.26.1", | ||
"@typescript-eslint/eslint-plugin": "^4.29.2", | ||
"@typescript-eslint/parser": "^4.29.2", | ||
"cpy-cli": "^3.1.1", | ||
"eslint": "^7.28.0", | ||
"eslint-config-kentcdodds": "^19.0.0", | ||
"eslint": "^7.32.0", | ||
"eslint-config-kentcdodds": "^19.1.1", | ||
"eslint-config-prettier": "^8.3.0", | ||
"eslint-plugin-import": "^2.23.4", | ||
"eslint-plugin-jest": "^24.3.6", | ||
"eslint-plugin-import": "^2.24.1", | ||
"eslint-plugin-jest": "^24.4.0", | ||
"eslint-plugin-jest-formatting": "^3.0.0", | ||
"eslint-plugin-node": "^11.1.0", | ||
"eslint-plugin-prettier": "^3.4.0", | ||
"eslint-plugin-prettier": "^3.4.1", | ||
"eslint-plugin-promise": "^5.1.0", | ||
"husky": "^7.0.0", | ||
"husky": "^7.0.1", | ||
"is-ci": "^3.0.0", | ||
"jest": "^27.0.4", | ||
"lint-staged": "^11.1.1", | ||
"jest": "^27.0.6", | ||
"lint-staged": "^11.1.2", | ||
"prettier": "2.3.2", | ||
"semantic-release": "^17.4.3", | ||
"ts-jest": "^27.0.3", | ||
"ts-node": "^10.0.0", | ||
"typescript": "^4.3.2" | ||
"semantic-release": "^17.4.5", | ||
"ts-jest": "27.0.5", | ||
"ts-node": "^10.2.1", | ||
"typescript": "^4.3.5" | ||
}, | ||
@@ -75,0 +75,0 @@ "peerDependencies": { |
@@ -377,2 +377,3 @@ <div align="center"> | ||
<td align="center"><a href="https://github.com/HonkingGoose"><img src="https://avatars.githubusercontent.com/u/34918129?v=4?s=100" width="100px;" alt=""/><br /><sub><b>HonkingGoose</b></sub></a><br /><a href="https://github.com/testing-library/eslint-plugin-testing-library/commits?author=HonkingGoose" title="Documentation">๐</a> <a href="#maintenance-HonkingGoose" title="Maintenance">๐ง</a></td> | ||
<td align="center"><a href="http://everlong.org/"><img src="https://avatars.githubusercontent.com/u/454175?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Julien Wajsberg</b></sub></a><br /><a href="https://github.com/testing-library/eslint-plugin-testing-library/issues?q=author%3Ajulienw" title="Bug reports">๐</a> <a href="https://github.com/testing-library/eslint-plugin-testing-library/commits?author=julienw" title="Code">๐ป</a> <a href="https://github.com/testing-library/eslint-plugin-testing-library/commits?author=julienw" title="Tests">โ ๏ธ</a></td> | ||
</tr> | ||
@@ -379,0 +380,0 @@ </table> |
@@ -64,2 +64,132 @@ "use strict"; | ||
} | ||
function getWrongQueryNameInAssertion(node) { | ||
if (!node_utils_1.isCallExpression(node.body) || | ||
!node_utils_1.isMemberExpression(node.body.callee)) { | ||
return null; | ||
} | ||
if (node_utils_1.isCallExpression(node.body.callee.object) && | ||
node_utils_1.isCallExpression(node.body.callee.object.arguments[0]) && | ||
experimental_utils_1.ASTUtils.isIdentifier(node.body.callee.object.arguments[0].callee)) { | ||
return node.body.callee.object.arguments[0].callee.name; | ||
} | ||
if (!experimental_utils_1.ASTUtils.isIdentifier(node.body.callee.property)) { | ||
return null; | ||
} | ||
if (node_utils_1.isCallExpression(node.body.callee.object) && | ||
node_utils_1.isCallExpression(node.body.callee.object.arguments[0]) && | ||
node_utils_1.isMemberExpression(node.body.callee.object.arguments[0].callee) && | ||
experimental_utils_1.ASTUtils.isIdentifier(node.body.callee.object.arguments[0].callee.property)) { | ||
return node.body.callee.object.arguments[0].callee.property.name; | ||
} | ||
if (node_utils_1.isMemberExpression(node.body.callee.object) && | ||
node_utils_1.isCallExpression(node.body.callee.object.object) && | ||
node_utils_1.isCallExpression(node.body.callee.object.object.arguments[0]) && | ||
node_utils_1.isMemberExpression(node.body.callee.object.object.arguments[0].callee) && | ||
experimental_utils_1.ASTUtils.isIdentifier(node.body.callee.object.object.arguments[0].callee.property)) { | ||
return node.body.callee.object.object.arguments[0].callee.property.name; | ||
} | ||
if (node_utils_1.isMemberExpression(node.body.callee.object) && | ||
node_utils_1.isCallExpression(node.body.callee.object.object) && | ||
node_utils_1.isCallExpression(node.body.callee.object.object.arguments[0]) && | ||
experimental_utils_1.ASTUtils.isIdentifier(node.body.callee.object.object.arguments[0].callee)) { | ||
return node.body.callee.object.object.arguments[0].callee.name; | ||
} | ||
return node.body.callee.property.name; | ||
} | ||
function getWrongQueryName(node) { | ||
if (!node_utils_1.isCallExpression(node.body)) { | ||
return null; | ||
} | ||
if (experimental_utils_1.ASTUtils.isIdentifier(node.body.callee) && | ||
helpers.isSyncQuery(node.body.callee)) { | ||
return node.body.callee.name; | ||
} | ||
return getWrongQueryNameInAssertion(node); | ||
} | ||
function getCaller(node) { | ||
if (!node_utils_1.isCallExpression(node.body) || | ||
!node_utils_1.isMemberExpression(node.body.callee)) { | ||
return null; | ||
} | ||
if (experimental_utils_1.ASTUtils.isIdentifier(node.body.callee.object)) { | ||
return node.body.callee.object.name; | ||
} | ||
if (node_utils_1.isCallExpression(node.body.callee.object) && | ||
experimental_utils_1.ASTUtils.isIdentifier(node.body.callee.object.callee) && | ||
node_utils_1.isCallExpression(node.body.callee.object.arguments[0]) && | ||
node_utils_1.isMemberExpression(node.body.callee.object.arguments[0].callee) && | ||
experimental_utils_1.ASTUtils.isIdentifier(node.body.callee.object.arguments[0].callee.object)) { | ||
return node.body.callee.object.arguments[0].callee.object.name; | ||
} | ||
if (node_utils_1.isMemberExpression(node.body.callee.object) && | ||
node_utils_1.isCallExpression(node.body.callee.object.object) && | ||
node_utils_1.isCallExpression(node.body.callee.object.object.arguments[0]) && | ||
node_utils_1.isMemberExpression(node.body.callee.object.object.arguments[0].callee) && | ||
experimental_utils_1.ASTUtils.isIdentifier(node.body.callee.object.object.arguments[0].callee.object)) { | ||
return node.body.callee.object.object.arguments[0].callee.object.name; | ||
} | ||
return null; | ||
} | ||
function isSyncQuery(node) { | ||
if (!node_utils_1.isCallExpression(node.body)) { | ||
return false; | ||
} | ||
const isQuery = experimental_utils_1.ASTUtils.isIdentifier(node.body.callee) && | ||
helpers.isSyncQuery(node.body.callee); | ||
const isWrappedInPresenceAssert = node_utils_1.isMemberExpression(node.body.callee) && | ||
node_utils_1.isCallExpression(node.body.callee.object) && | ||
node_utils_1.isCallExpression(node.body.callee.object.arguments[0]) && | ||
experimental_utils_1.ASTUtils.isIdentifier(node.body.callee.object.arguments[0].callee) && | ||
helpers.isSyncQuery(node.body.callee.object.arguments[0].callee) && | ||
helpers.isPresenceAssert(node.body.callee); | ||
const isWrappedInNegatedPresenceAssert = node_utils_1.isMemberExpression(node.body.callee) && | ||
node_utils_1.isMemberExpression(node.body.callee.object) && | ||
node_utils_1.isCallExpression(node.body.callee.object.object) && | ||
node_utils_1.isCallExpression(node.body.callee.object.object.arguments[0]) && | ||
experimental_utils_1.ASTUtils.isIdentifier(node.body.callee.object.object.arguments[0].callee) && | ||
helpers.isSyncQuery(node.body.callee.object.object.arguments[0].callee) && | ||
helpers.isPresenceAssert(node.body.callee.object); | ||
return (isQuery || isWrappedInPresenceAssert || isWrappedInNegatedPresenceAssert); | ||
} | ||
function isScreenSyncQuery(node) { | ||
if (!node_utils_1.isArrowFunctionExpression(node) || !node_utils_1.isCallExpression(node.body)) { | ||
return false; | ||
} | ||
if (!node_utils_1.isMemberExpression(node.body.callee) || | ||
!experimental_utils_1.ASTUtils.isIdentifier(node.body.callee.property)) { | ||
return false; | ||
} | ||
if (!experimental_utils_1.ASTUtils.isIdentifier(node.body.callee.object) && | ||
!node_utils_1.isCallExpression(node.body.callee.object) && | ||
!node_utils_1.isMemberExpression(node.body.callee.object)) { | ||
return false; | ||
} | ||
const isWrappedInPresenceAssert = helpers.isPresenceAssert(node.body.callee) && | ||
node_utils_1.isCallExpression(node.body.callee.object) && | ||
node_utils_1.isCallExpression(node.body.callee.object.arguments[0]) && | ||
node_utils_1.isMemberExpression(node.body.callee.object.arguments[0].callee) && | ||
experimental_utils_1.ASTUtils.isIdentifier(node.body.callee.object.arguments[0].callee.object); | ||
const isWrappedInNegatedPresenceAssert = node_utils_1.isMemberExpression(node.body.callee.object) && | ||
helpers.isPresenceAssert(node.body.callee.object) && | ||
node_utils_1.isCallExpression(node.body.callee.object.object) && | ||
node_utils_1.isCallExpression(node.body.callee.object.object.arguments[0]) && | ||
node_utils_1.isMemberExpression(node.body.callee.object.object.arguments[0].callee); | ||
return (helpers.isSyncQuery(node.body.callee.property) || | ||
isWrappedInPresenceAssert || | ||
isWrappedInNegatedPresenceAssert); | ||
} | ||
function getQueryArguments(node) { | ||
if (node_utils_1.isMemberExpression(node.callee) && | ||
node_utils_1.isCallExpression(node.callee.object) && | ||
node_utils_1.isCallExpression(node.callee.object.arguments[0])) { | ||
return node.callee.object.arguments[0].arguments; | ||
} | ||
if (node_utils_1.isMemberExpression(node.callee) && | ||
node_utils_1.isMemberExpression(node.callee.object) && | ||
node_utils_1.isCallExpression(node.callee.object.object) && | ||
node_utils_1.isCallExpression(node.callee.object.object.arguments[0])) { | ||
return node.callee.object.object.arguments[0].arguments; | ||
} | ||
return node.arguments; | ||
} | ||
return { | ||
@@ -72,17 +202,18 @@ 'AwaitExpression > CallExpression'(node) { | ||
const argument = node.arguments[0]; | ||
if (!node_utils_1.isArrowFunctionExpression(argument)) { | ||
if (!node_utils_1.isArrowFunctionExpression(argument) || | ||
!node_utils_1.isCallExpression(argument.body)) { | ||
return; | ||
} | ||
if (!node_utils_1.isCallExpression(argument.body)) { | ||
return; | ||
} | ||
const waitForMethodName = node.callee.name; | ||
if (node_utils_1.isMemberExpression(argument.body.callee) && | ||
experimental_utils_1.ASTUtils.isIdentifier(argument.body.callee.property) && | ||
experimental_utils_1.ASTUtils.isIdentifier(argument.body.callee.object) && | ||
helpers.isSyncQuery(argument.body.callee.property)) { | ||
const fullQueryMethod = argument.body.callee.property.name; | ||
const caller = argument.body.callee.object.name; | ||
if (isScreenSyncQuery(argument)) { | ||
const caller = getCaller(argument); | ||
if (!caller) { | ||
return; | ||
} | ||
const fullQueryMethod = getWrongQueryName(argument); | ||
if (!fullQueryMethod) { | ||
return; | ||
} | ||
const queryVariant = getFindByQueryVariant(fullQueryMethod); | ||
const callArguments = argument.body.arguments; | ||
const callArguments = getQueryArguments(argument.body); | ||
const queryMethod = fullQueryMethod.split('By')[1]; | ||
@@ -108,10 +239,12 @@ reportInvalidUsage(node, { | ||
} | ||
if (!experimental_utils_1.ASTUtils.isIdentifier(argument.body.callee) || | ||
!helpers.isSyncQuery(argument.body.callee)) { | ||
if (!isSyncQuery(argument)) { | ||
return; | ||
} | ||
const fullQueryMethod = argument.body.callee.name; | ||
const fullQueryMethod = getWrongQueryName(argument); | ||
if (!fullQueryMethod) { | ||
return; | ||
} | ||
const queryMethod = fullQueryMethod.split('By')[1]; | ||
const queryVariant = getFindByQueryVariant(fullQueryMethod); | ||
const callArguments = argument.body.arguments; | ||
const callArguments = getQueryArguments(argument.body); | ||
reportInvalidUsage(node, { | ||
@@ -118,0 +251,0 @@ queryMethod, |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
218469
3898
411