no-hooks.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. category: 'Best Practices',
  12. description: 'Disallow setup and teardown hooks',
  13. recommended: false
  14. },
  15. messages: {
  16. unexpectedHook: "Unexpected '{{ hookName }}' hook"
  17. },
  18. schema: [{
  19. type: 'object',
  20. properties: {
  21. allow: {
  22. type: 'array',
  23. contains: ['beforeAll', 'beforeEach', 'afterAll', 'afterEach']
  24. }
  25. },
  26. additionalProperties: false
  27. }],
  28. type: 'suggestion'
  29. },
  30. defaultOptions: [{
  31. allow: []
  32. }],
  33. create(context, [{
  34. allow = []
  35. }]) {
  36. return {
  37. CallExpression(node) {
  38. const jestFnCall = (0, _utils.parseJestFnCall)(node, context);
  39. if ((jestFnCall === null || jestFnCall === void 0 ? void 0 : jestFnCall.type) === 'hook' && !allow.includes(jestFnCall.name)) {
  40. context.report({
  41. node,
  42. messageId: 'unexpectedHook',
  43. data: {
  44. hookName: jestFnCall.name
  45. }
  46. });
  47. }
  48. }
  49. };
  50. }
  51. });
  52. exports.default = _default;