Skip to content

Commit af8c8d9

Browse files
authored
fix(prefer-screen-queries): support aliased screen imports (#1101)
Fixes #776
1 parent 875651e commit af8c8d9

File tree

2 files changed

+26
-5
lines changed

2 files changed

+26
-5
lines changed

lib/rules/prefer-screen-queries.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
isObjectPattern,
1212
isProperty,
1313
} from '../node-utils';
14+
import { resolveToTestingLibraryFn } from '../utils';
1415

1516
import type { TSESTree } from '@typescript-eslint/utils';
1617

@@ -181,10 +182,11 @@ export default createTestingLibraryRule<Options, MessageIds>({
181182
reportInvalidUsage(identifierNode);
182183
return;
183184
}
184-
185+
const testingLibraryFn = resolveToTestingLibraryFn(node, context);
185186
if (
186187
ASTUtils.isIdentifier(memberExpressionNode.object) &&
187-
!isIdentifierAllowed(memberExpressionNode.object.name)
188+
!isIdentifierAllowed(memberExpressionNode.object.name) &&
189+
!isIdentifierAllowed(testingLibraryFn?.original ?? '')
188190
) {
189191
reportInvalidUsage(identifierNode);
190192
}

tests/lib/rules/prefer-screen-queries.test.ts

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ ruleTester.run(RULE_NAME, rule, {
5757
code: `
5858
import { render } from '${testingFramework}'
5959
import { ${query} } from 'custom-queries'
60-
60+
6161
test("imported custom queries, since they can't be used through screen", () => {
6262
render(foo)
6363
${query}('bar')
@@ -67,7 +67,7 @@ ruleTester.run(RULE_NAME, rule, {
6767
...CUSTOM_QUERY_COMBINATIONS.map((query) => ({
6868
code: `
6969
import { render } from '${testingFramework}'
70-
70+
7171
test("render-returned custom queries, since they can't be used through screen", () => {
7272
const { ${query} } = render(foo)
7373
${query}('bar')
@@ -80,13 +80,22 @@ ruleTester.run(RULE_NAME, rule, {
8080
},
8181
code: `
8282
import { render } from '${testingFramework}'
83-
83+
8484
test("custom queries + custom-queries setting, since they can't be used through screen", () => {
8585
const { ${query} } = render(foo)
8686
${query}('bar')
8787
})
8888
`,
8989
})),
90+
{
91+
code: `
92+
import { screen as rtlScreen } from '${testingFramework}'
93+
94+
test("test", () => {
95+
rtlScreen.getByText('hoge');
96+
})
97+
`,
98+
},
9099
]),
91100
{
92101
code: `
@@ -136,6 +145,16 @@ ruleTester.run(RULE_NAME, rule, {
136145
utils.unmount();
137146
`,
138147
},
148+
{
149+
settings: { 'testing-library/utils-module': 'test-utils' },
150+
code: `
151+
import { screen as rtlScreen } from 'test-utils'
152+
153+
test("test", () => {
154+
rtlScreen.getByText('hoge');
155+
})
156+
`,
157+
},
139158
...ALL_QUERIES_COMBINATIONS.map((queryMethod: string) => ({
140159
code: `
141160
const { ${queryMethod} } = render(baz, { baseElement: treeA })

0 commit comments

Comments
 (0)