no-conditional-in-test.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _utils = require("./utils");
  7. var _default = (0, _utils.createRule)({
  8. name: __filename,
  9. meta: {
  10. docs: {
  11. description: 'Disallow conditional logic in tests',
  12. category: 'Best Practices',
  13. recommended: false
  14. },
  15. messages: {
  16. conditionalInTest: 'Avoid having conditionals in tests'
  17. },
  18. type: 'problem',
  19. schema: []
  20. },
  21. defaultOptions: [],
  22. create(context) {
  23. let inTestCase = false;
  24. const maybeReportConditional = node => {
  25. if (inTestCase) {
  26. context.report({
  27. messageId: 'conditionalInTest',
  28. node
  29. });
  30. }
  31. };
  32. return {
  33. CallExpression(node) {
  34. if ((0, _utils.isTypeOfJestFnCall)(node, context, ['test'])) {
  35. inTestCase = true;
  36. }
  37. },
  38. 'CallExpression:exit'(node) {
  39. if ((0, _utils.isTypeOfJestFnCall)(node, context, ['test'])) {
  40. inTestCase = false;
  41. }
  42. },
  43. IfStatement: maybeReportConditional,
  44. SwitchStatement: maybeReportConditional,
  45. ConditionalExpression: maybeReportConditional,
  46. LogicalExpression: maybeReportConditional
  47. };
  48. }
  49. });
  50. exports.default = _default;