Socket
Socket
Sign inDemoInstall

eslint-plugin-testing-library

Package Overview
Dependencies
Maintainers
3
Versions
160
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

eslint-plugin-testing-library - npm Package Compare versions

Comparing version 4.11.0 to 4.12.0

32

package.json
{
"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,

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with โšก๏ธ by Socket Inc