@@ -89,9 +89,9 @@ type IsAbsenceAssertFn = (node: TSESTree.MemberExpression) => boolean;
8989type CanReportErrorsFn = ( ) => boolean ;
9090type FindImportedTestingLibraryUtilSpecifierFn = (
9191 specifierName : string
92- ) => TSESTree . ImportClause | TSESTree . Identifier | undefined ;
92+ ) => TSESTree . Identifier | TSESTree . ImportClause | undefined ;
9393type IsNodeComingFromTestingLibraryFn = (
94- node : TSESTree . MemberExpression | TSESTree . Identifier
94+ node : TSESTree . Identifier | TSESTree . MemberExpression
9595) => boolean ;
9696
9797export interface DetectionHelpers {
@@ -181,7 +181,7 @@ export function detectTestingLibraryUtils<
181181 * reporting)
182182 */
183183 function isPotentialTestingLibraryFunction (
184- node : TSESTree . Identifier ,
184+ node : TSESTree . Identifier | null | undefined ,
185185 isPotentialFunctionCallback : (
186186 identifierNodeName : string ,
187187 originalNodeName ?: string
@@ -472,9 +472,8 @@ export function detectTestingLibraryUtils<
472472 * Determines whether a given node is fireEvent method or not
473473 */
474474 const isFireEventMethod : IsFireEventMethodFn = ( node ) => {
475- const fireEventUtil = findImportedTestingLibraryUtilSpecifier (
476- FIRE_EVENT_NAME
477- ) ;
475+ const fireEventUtil =
476+ findImportedTestingLibraryUtilSpecifier ( FIRE_EVENT_NAME ) ;
478477 let fireEventUtilName : string | undefined ;
479478
480479 if ( fireEventUtil ) {
@@ -655,9 +654,8 @@ export function detectTestingLibraryUtils<
655654 return false ;
656655 }
657656 const referenceNode = getReferenceNode ( node ) ;
658- const referenceNodeIdentifier = getPropertyIdentifierNode (
659- referenceNode
660- ) ;
657+ const referenceNodeIdentifier =
658+ getPropertyIdentifierNode ( referenceNode ) ;
661659 if ( ! referenceNodeIdentifier ) {
662660 return false ;
663661 }
@@ -759,54 +757,58 @@ export function detectTestingLibraryUtils<
759757 /**
760758 * Finds the import util specifier related to Testing Library for a given name.
761759 */
762- const findImportedTestingLibraryUtilSpecifier : FindImportedTestingLibraryUtilSpecifierFn = (
763- specifierName
764- ) : TSESTree . ImportClause | TSESTree . Identifier | undefined => {
765- const node = getCustomModuleImportNode ( ) ?? getTestingLibraryImportNode ( ) ;
760+ const findImportedTestingLibraryUtilSpecifier : FindImportedTestingLibraryUtilSpecifierFn =
761+ (
762+ specifierName
763+ ) : TSESTree . Identifier | TSESTree . ImportClause | undefined => {
764+ const node =
765+ getCustomModuleImportNode ( ) ?? getTestingLibraryImportNode ( ) ;
766+
767+ if ( ! node ) {
768+ return undefined ;
769+ }
766770
767- if ( ! node ) {
768- return undefined ;
769- }
771+ return findImportSpecifier ( specifierName , node ) ;
772+ } ;
770773
771- return findImportSpecifier ( specifierName , node ) ;
772- } ;
774+ const findImportedUserEventSpecifier : ( ) => TSESTree . Identifier | null =
775+ ( ) => {
776+ if ( ! importedUserEventLibraryNode ) {
777+ return null ;
778+ }
773779
774- const findImportedUserEventSpecifier : ( ) => TSESTree . Identifier | null = ( ) => {
775- if ( ! importedUserEventLibraryNode ) {
776- return null ;
777- }
780+ if ( isImportDeclaration ( importedUserEventLibraryNode ) ) {
781+ const userEventIdentifier =
782+ importedUserEventLibraryNode . specifiers . find ( ( specifier ) =>
783+ isImportDefaultSpecifier ( specifier )
784+ ) ;
778785
779- if ( isImportDeclaration ( importedUserEventLibraryNode ) ) {
780- const userEventIdentifier = importedUserEventLibraryNode . specifiers . find (
781- ( specifier ) => isImportDefaultSpecifier ( specifier )
782- ) ;
786+ if ( userEventIdentifier ) {
787+ return userEventIdentifier . local ;
788+ }
789+ } else {
790+ if (
791+ ! ASTUtils . isVariableDeclarator ( importedUserEventLibraryNode . parent )
792+ ) {
793+ return null ;
794+ }
783795
784- if ( userEventIdentifier ) {
785- return userEventIdentifier . local ;
786- }
787- } else {
788- if (
789- ! ASTUtils . isVariableDeclarator ( importedUserEventLibraryNode . parent )
790- ) {
791- return null ;
792- }
796+ const requireNode = importedUserEventLibraryNode . parent ;
797+ if ( ! ASTUtils . isIdentifier ( requireNode . id ) ) {
798+ return null ;
799+ }
793800
794- const requireNode = importedUserEventLibraryNode . parent ;
795- if ( ! ASTUtils . isIdentifier ( requireNode . id ) ) {
796- return null ;
801+ return requireNode . id ;
797802 }
798803
799- return requireNode . id ;
800- }
801-
802- return null ;
803- } ;
804+ return null ;
805+ } ;
804806
805807 const getTestingLibraryImportedUtilSpecifier = (
806- node : TSESTree . MemberExpression | TSESTree . Identifier
807- ) : TSESTree . ImportClause | TSESTree . Identifier | undefined => {
808- const identifierName : string | undefined = getPropertyIdentifierNode ( node )
809- ?. name ;
808+ node : TSESTree . Identifier | TSESTree . MemberExpression
809+ ) : TSESTree . Identifier | TSESTree . ImportClause | undefined => {
810+ const identifierName : string | undefined =
811+ getPropertyIdentifierNode ( node ) ?. name ;
810812
811813 if ( ! identifierName ) {
812814 return undefined ;
@@ -848,9 +850,8 @@ export function detectTestingLibraryUtils<
848850 return importNode . parent ;
849851 }
850852
851- const variableDeclarator = findClosestVariableDeclaratorNode (
852- importNode
853- ) ;
853+ const variableDeclarator =
854+ findClosestVariableDeclaratorNode ( importNode ) ;
854855
855856 if ( isCallExpression ( variableDeclarator ?. init ) ) {
856857 return variableDeclarator ?. init ;
@@ -868,8 +869,8 @@ export function detectTestingLibraryUtils<
868869 return false ;
869870 }
870871
871- const identifierName : string | undefined = getPropertyIdentifierNode ( node )
872- ?. name ;
872+ const identifierName : string | undefined =
873+ getPropertyIdentifierNode ( node ) ?. name ;
873874
874875 if ( ! identifierName ) {
875876 return false ;
@@ -1045,6 +1046,8 @@ export function detectTestingLibraryUtils<
10451046 if ( canReportErrors ( ) && ruleInstructions [ instruction ] ) {
10461047 return ruleInstructions [ instruction ] ?.( node ) ;
10471048 }
1049+
1050+ return undefined ;
10481051 } ;
10491052 } ) ;
10501053
0 commit comments