no-timing-in-fetch-data.test.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /**
  2. * @fileoverview disallow `setTimeout/setInterval` in `asyncData/fetch`
  3. * @author Xin Du <clark.duxin@gmail.com>
  4. */
  5. 'use strict'
  6. // ------------------------------------------------------------------------------
  7. // Requirements
  8. // ------------------------------------------------------------------------------
  9. const rule = require('../no-timing-in-fetch-data')
  10. const RuleTester = require('eslint').RuleTester
  11. const parserOptions = {
  12. ecmaVersion: 2018,
  13. sourceType: 'module'
  14. }
  15. // ------------------------------------------------------------------------------
  16. // Tests
  17. // ------------------------------------------------------------------------------
  18. const ruleTester = new RuleTester()
  19. ruleTester.run('no-timing-in-fetch-data', rule, {
  20. valid: [
  21. {
  22. filename: 'test.vue',
  23. code: `
  24. export default {
  25. async asyncData() {
  26. let foo = 'baz'
  27. },
  28. fetch() {
  29. let foo = 'baz'
  30. }
  31. }
  32. `,
  33. parserOptions
  34. }
  35. ],
  36. invalid: [
  37. {
  38. filename: 'test.vue',
  39. code: `
  40. export default {
  41. asyncData() {
  42. let foo = 'bar'
  43. setTimeout(() => {
  44. foo = 'baz'
  45. }, 0)
  46. },
  47. fetch() {
  48. let foo = 'bar'
  49. setInterval(() => {
  50. foo = 'baz'
  51. }, 0)
  52. }
  53. }
  54. `,
  55. errors: [{
  56. message: 'Unexpected setTimeout in asyncData.',
  57. type: 'CallExpression'
  58. }, {
  59. message: 'Unexpected setInterval in fetch.',
  60. type: 'CallExpression'
  61. }],
  62. parserOptions
  63. },
  64. {
  65. filename: 'test.vue',
  66. code: `
  67. export default {
  68. asyncData() {
  69. let timer = setInterval
  70. },
  71. fetch() {
  72. let timer = setTimeout
  73. }
  74. }
  75. `,
  76. errors: [{
  77. message: 'Unexpected setInterval in asyncData.',
  78. type: 'VariableDeclarator'
  79. }, {
  80. message: 'Unexpected setTimeout in fetch.',
  81. type: 'VariableDeclarator'
  82. }],
  83. parserOptions
  84. }
  85. ]
  86. })