@@ -54,6 +54,7 @@ export type EnhancedRuleCreate<
5454
5555// Helpers methods
5656type GetTestingLibraryImportNodeFn = ( ) => ImportModuleNode | null ;
57+ type GetTestingLibraryImportNodesFn = ( ) => ImportModuleNode [ ] ;
5758type GetCustomModuleImportNodeFn = ( ) => ImportModuleNode | null ;
5859type GetTestingLibraryImportNameFn = ( ) => string | undefined ;
5960type GetCustomModuleImportNameFn = ( ) => string | undefined ;
@@ -95,6 +96,7 @@ type IsNodeComingFromTestingLibraryFn = (
9596
9697export interface DetectionHelpers {
9798 getTestingLibraryImportNode : GetTestingLibraryImportNodeFn ;
99+ getAllTestingLibraryImportNodes : GetTestingLibraryImportNodesFn ;
98100 getCustomModuleImportNode : GetCustomModuleImportNodeFn ;
99101 getTestingLibraryImportName : GetTestingLibraryImportNameFn ;
100102 getCustomModuleImportName : GetCustomModuleImportNameFn ;
@@ -158,7 +160,7 @@ export function detectTestingLibraryUtils<
158160 context : TestingLibraryContext < TOptions , TMessageIds > ,
159161 optionsWithDefault : Readonly < TOptions >
160162 ) : TSESLint . RuleListener => {
161- let importedTestingLibraryNode : ImportModuleNode | null = null ;
163+ const importedTestingLibraryNodes : ImportModuleNode [ ] = [ ] ;
162164 let importedCustomModuleNode : ImportModuleNode | null = null ;
163165 let importedUserEventLibraryNode : ImportModuleNode | null = null ;
164166 let importedReactDomTestUtilsNode : ImportModuleNode | null = null ;
@@ -299,15 +301,20 @@ export function detectTestingLibraryUtils<
299301
300302 // Helpers for Testing Library detection.
301303 const getTestingLibraryImportNode : GetTestingLibraryImportNodeFn = ( ) => {
302- return importedTestingLibraryNode ;
304+ return importedTestingLibraryNodes [ 0 ] ;
303305 } ;
304306
307+ const getAllTestingLibraryImportNodes : GetTestingLibraryImportNodesFn =
308+ ( ) => {
309+ return importedTestingLibraryNodes ;
310+ } ;
311+
305312 const getCustomModuleImportNode : GetCustomModuleImportNodeFn = ( ) => {
306313 return importedCustomModuleNode ;
307314 } ;
308315
309316 const getTestingLibraryImportName : GetTestingLibraryImportNameFn = ( ) => {
310- return getImportModuleName ( importedTestingLibraryNode ) ;
317+ return getImportModuleName ( importedTestingLibraryNodes [ 0 ] ) ;
311318 } ;
312319
313320 const getCustomModuleImportName : GetCustomModuleImportNameFn = ( ) => {
@@ -331,7 +338,7 @@ export function detectTestingLibraryUtils<
331338 isStrict = false
332339 ) => {
333340 const isSomeModuleImported =
334- ! ! importedTestingLibraryNode || ! ! importedCustomModuleNode ;
341+ importedTestingLibraryNodes . length !== 0 || ! ! importedCustomModuleNode ;
335342
336343 return (
337344 ( ! isStrict && isAggressiveModuleReportingEnabled ( ) ) ||
@@ -945,6 +952,7 @@ export function detectTestingLibraryUtils<
945952
946953 const helpers : DetectionHelpers = {
947954 getTestingLibraryImportNode,
955+ getAllTestingLibraryImportNodes,
948956 getCustomModuleImportNode,
949957 getTestingLibraryImportName,
950958 getCustomModuleImportName,
@@ -989,12 +997,9 @@ export function detectTestingLibraryUtils<
989997 return ;
990998 }
991999 // check only if testing library import not found yet so we avoid
992- // to override importedTestingLibraryNode after it's found
993- if (
994- ! importedTestingLibraryNode &&
995- / t e s t i n g - l i b r a r y / g. test ( node . source . value )
996- ) {
997- importedTestingLibraryNode = node ;
1000+ // to override importedTestingLibraryNodes after it's found
1001+ if ( / t e s t i n g - l i b r a r y / g. test ( node . source . value ) ) {
1002+ importedTestingLibraryNodes . push ( node ) ;
9981003 }
9991004
10001005 // check only if custom module import not found yet so we avoid
@@ -1035,15 +1040,14 @@ export function detectTestingLibraryUtils<
10351040 const { arguments : args } = callExpression ;
10361041
10371042 if (
1038- ! importedTestingLibraryNode &&
10391043 args . some (
10401044 ( arg ) =>
10411045 isLiteral ( arg ) &&
10421046 typeof arg . value === 'string' &&
10431047 / t e s t i n g - l i b r a r y / g. test ( arg . value )
10441048 )
10451049 ) {
1046- importedTestingLibraryNode = callExpression ;
1050+ importedTestingLibraryNodes . push ( callExpression ) ;
10471051 }
10481052
10491053 const customModule = getCustomModule ( ) ;
0 commit comments