source: frontend/node_modules/eslint-plugin-testing-library/rules/prefer-presence-queries.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 13 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.9 KB
Line 
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.RULE_NAME = void 0;
4const create_testing_library_rule_1 = require("../create-testing-library-rule");
5const node_utils_1 = require("../node-utils");
6exports.RULE_NAME = 'prefer-presence-queries';
7exports.default = (0, create_testing_library_rule_1.createTestingLibraryRule)({
8 name: exports.RULE_NAME,
9 meta: {
10 docs: {
11 description: 'Ensure appropriate `get*`/`query*` queries are used with their respective matchers',
12 recommendedConfig: {
13 dom: 'error',
14 angular: 'error',
15 react: 'error',
16 vue: 'error',
17 marko: 'error',
18 },
19 },
20 messages: {
21 wrongPresenceQuery: 'Use `getBy*` queries rather than `queryBy*` for checking element is present',
22 wrongAbsenceQuery: 'Use `queryBy*` queries rather than `getBy*` for checking element is NOT present',
23 },
24 schema: [
25 {
26 type: 'object',
27 additionalProperties: false,
28 properties: {
29 presence: {
30 type: 'boolean',
31 },
32 absence: {
33 type: 'boolean',
34 },
35 },
36 },
37 ],
38 type: 'suggestion',
39 },
40 defaultOptions: [
41 {
42 presence: true,
43 absence: true,
44 },
45 ],
46 create(context, [{ absence = true, presence = true }], helpers) {
47 return {
48 'CallExpression Identifier'(node) {
49 const expectCallNode = (0, node_utils_1.findClosestCallNode)(node, 'expect');
50 const withinCallNode = (0, node_utils_1.findClosestCallNode)(node, 'within');
51 if (!expectCallNode || !(0, node_utils_1.isMemberExpression)(expectCallNode.parent)) {
52 return;
53 }
54 if (!helpers.isSyncQuery(node)) {
55 return;
56 }
57 const isPresenceQuery = helpers.isGetQueryVariant(node);
58 const expectStatement = expectCallNode.parent;
59 const isPresenceAssert = helpers.isPresenceAssert(expectStatement);
60 const isAbsenceAssert = helpers.isAbsenceAssert(expectStatement);
61 if (!isPresenceAssert && !isAbsenceAssert) {
62 return;
63 }
64 if (presence &&
65 (withinCallNode || isPresenceAssert) &&
66 !isPresenceQuery) {
67 context.report({ node, messageId: 'wrongPresenceQuery' });
68 }
69 else if (!withinCallNode &&
70 absence &&
71 isAbsenceAssert &&
72 isPresenceQuery) {
73 context.report({ node, messageId: 'wrongAbsenceQuery' });
74 }
75 },
76 };
77 },
78});
Note: See TracBrowser for help on using the repository browser.