source: frontend/node_modules/eslint-plugin-jest/lib/rules/valid-describe-callback.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: 2.8 KB
RevLine 
[9af201e]1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = void 0;
7
8var _experimentalUtils = require("@typescript-eslint/experimental-utils");
9
10var _utils = require("./utils");
11
12const paramsLocation = params => {
13 const [first] = params;
14 const last = params[params.length - 1];
15 return {
16 start: first.loc.start,
17 end: last.loc.end
18 };
19};
20
21var _default = (0, _utils.createRule)({
22 name: __filename,
23 meta: {
24 type: 'problem',
25 docs: {
26 category: 'Possible Errors',
27 description: 'Enforce valid `describe()` callback',
28 recommended: 'error'
29 },
30 messages: {
31 nameAndCallback: 'Describe requires name and callback arguments',
32 secondArgumentMustBeFunction: 'Second argument must be function',
33 noAsyncDescribeCallback: 'No async describe callback',
34 unexpectedDescribeArgument: 'Unexpected argument(s) in describe callback',
35 unexpectedReturnInDescribe: 'Unexpected return statement in describe callback'
36 },
37 schema: []
38 },
39 defaultOptions: [],
40
41 create(context) {
42 return {
43 CallExpression(node) {
44 if (!(0, _utils.isDescribeCall)(node)) {
45 return;
46 }
47
48 if (node.arguments.length < 1) {
49 return context.report({
50 messageId: 'nameAndCallback',
51 loc: node.loc
52 });
53 }
54
55 const [, callback] = node.arguments;
56
57 if (!callback) {
58 context.report({
59 messageId: 'nameAndCallback',
60 loc: paramsLocation(node.arguments)
61 });
62 return;
63 }
64
65 if (!(0, _utils.isFunction)(callback)) {
66 context.report({
67 messageId: 'secondArgumentMustBeFunction',
68 loc: paramsLocation(node.arguments)
69 });
70 return;
71 }
72
73 if (callback.async) {
74 context.report({
75 messageId: 'noAsyncDescribeCallback',
76 node: callback
77 });
78 }
79
80 if (!(0, _utils.getNodeName)(node).endsWith('each') && callback.params.length) {
81 context.report({
82 messageId: 'unexpectedDescribeArgument',
83 loc: paramsLocation(callback.params)
84 });
85 }
86
87 if (callback.body.type === _experimentalUtils.AST_NODE_TYPES.CallExpression) {
88 context.report({
89 messageId: 'unexpectedReturnInDescribe',
90 node: callback
91 });
92 }
93
94 if (callback.body.type === _experimentalUtils.AST_NODE_TYPES.BlockStatement) {
95 callback.body.body.forEach(node => {
96 if (node.type === _experimentalUtils.AST_NODE_TYPES.ReturnStatement) {
97 context.report({
98 messageId: 'unexpectedReturnInDescribe',
99 node
100 });
101 }
102 });
103 }
104 }
105
106 };
107 }
108
109});
110
111exports.default = _default;
Note: See TracBrowser for help on using the repository browser.