source: frontend/node_modules/eslint-plugin-testing-library/rules/await-fire-event.js

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

Fix frontend appearance

  • Property mode set to 100644
File size: 3.3 KB
Line 
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.RULE_NAME = void 0;
4const utils_1 = require("@typescript-eslint/utils");
5const create_testing_library_rule_1 = require("../create-testing-library-rule");
6const node_utils_1 = require("../node-utils");
7exports.RULE_NAME = 'await-fire-event';
8exports.default = (0, create_testing_library_rule_1.createTestingLibraryRule)({
9 name: exports.RULE_NAME,
10 meta: {
11 type: 'problem',
12 docs: {
13 description: 'Enforce promises from `fireEvent` methods to be handled',
14 recommendedConfig: {
15 dom: false,
16 angular: false,
17 react: false,
18 vue: 'error',
19 marko: 'error',
20 },
21 },
22 messages: {
23 awaitFireEvent: 'Promise returned from `fireEvent.{{ name }}` must be handled',
24 fireEventWrapper: 'Promise returned from `{{ name }}` wrapper over fire event method must be handled',
25 },
26 schema: [],
27 },
28 defaultOptions: [],
29 create(context, _, helpers) {
30 const functionWrappersNames = [];
31 function reportUnhandledNode(node, closestCallExpressionNode, messageId = 'awaitFireEvent') {
32 if (!(0, node_utils_1.isPromiseHandled)(node)) {
33 context.report({
34 node: closestCallExpressionNode.callee,
35 messageId,
36 data: { name: node.name },
37 });
38 }
39 }
40 function detectFireEventMethodWrapper(node) {
41 const innerFunction = (0, node_utils_1.getInnermostReturningFunction)(context, node);
42 if (innerFunction) {
43 functionWrappersNames.push((0, node_utils_1.getFunctionName)(innerFunction));
44 }
45 }
46 return {
47 'CallExpression Identifier'(node) {
48 if (helpers.isFireEventMethod(node)) {
49 detectFireEventMethodWrapper(node);
50 const closestCallExpression = (0, node_utils_1.findClosestCallExpressionNode)(node, true);
51 if (!(closestCallExpression === null || closestCallExpression === void 0 ? void 0 : closestCallExpression.parent)) {
52 return;
53 }
54 const references = (0, node_utils_1.getVariableReferences)(context, closestCallExpression.parent);
55 if (references.length === 0) {
56 reportUnhandledNode(node, closestCallExpression);
57 }
58 else {
59 for (const reference of references) {
60 if (utils_1.ASTUtils.isIdentifier(reference.identifier)) {
61 reportUnhandledNode(reference.identifier, closestCallExpression);
62 }
63 }
64 }
65 }
66 else if (functionWrappersNames.includes(node.name)) {
67 const closestCallExpression = (0, node_utils_1.findClosestCallExpressionNode)(node, true);
68 if (!closestCallExpression) {
69 return;
70 }
71 reportUnhandledNode(node, closestCallExpression, 'fireEventWrapper');
72 }
73 },
74 };
75 },
76});
Note: See TracBrowser for help on using the repository browser.