Skip to content

Commit 57fade7

Browse files
committed
fix: enhance fixable reporting for presence and absence queries
1 parent 5eed1dd commit 57fade7

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

lib/rules/prefer-presence-queries.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
3333
wrongAbsenceQuery:
3434
'Use `queryBy*` queries rather than `getBy*` for checking element is NOT present',
3535
},
36+
fixable: 'code',
3637
schema: [
3738
{
3839
type: 'object',
@@ -62,7 +63,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
6263
const expectCallNode = findClosestCallNode(node, 'expect');
6364
const withinCallNode = findClosestCallNode(node, 'within');
6465

65-
if (!expectCallNode || !isMemberExpression(expectCallNode.parent)) {
66+
if (!isMemberExpression(expectCallNode?.parent)) {
6667
return;
6768
}
6869

@@ -86,14 +87,25 @@ export default createTestingLibraryRule<Options, MessageIds>({
8687
(withinCallNode || isPresenceAssert) &&
8788
!isPresenceQuery
8889
) {
89-
context.report({ node, messageId: 'wrongPresenceQuery' });
90+
const newQueryName = node.name.replace(/^query/, 'get');
91+
92+
context.report({
93+
node,
94+
messageId: 'wrongPresenceQuery',
95+
fix: (fixer) => fixer.replaceText(node, newQueryName),
96+
});
9097
} else if (
9198
!withinCallNode &&
9299
absence &&
93100
isAbsenceAssert &&
94101
isPresenceQuery
95102
) {
96-
context.report({ node, messageId: 'wrongAbsenceQuery' });
103+
const newQueryName = node.name.replace(/^get/, 'query');
104+
context.report({
105+
node,
106+
messageId: 'wrongAbsenceQuery',
107+
fix: (fixer) => fixer.replaceText(node, newQueryName),
108+
});
97109
}
98110
},
99111
};

0 commit comments

Comments
 (0)