no-env-in-hooks.test.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /**
  2. * @fileoverview disallow `process.server`/`process.client`/`process.browser` in `Vue Lifecycle Hooks`
  3. * @author Xin Du <clark.duxin@gmail.com>
  4. */
  5. 'use strict'
  6. // ------------------------------------------------------------------------------
  7. // Requirements
  8. // ------------------------------------------------------------------------------
  9. const rule = require('../no-env-in-hooks')
  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-env-in-hooks', rule, {
  20. valid: [
  21. {
  22. filename: 'test.vue',
  23. code: `
  24. export default {
  25. mounted() {
  26. const foo = 'bar'
  27. },
  28. beforeMount() {
  29. const foo = 'bar'
  30. },
  31. beforeDestroy() {
  32. const foo = 'bar'
  33. }
  34. }
  35. `,
  36. parserOptions
  37. }
  38. ],
  39. invalid: [
  40. {
  41. filename: 'test.vue',
  42. code: `
  43. export default {
  44. mounted() {
  45. if(process.server) {
  46. const foo = 'bar'
  47. }
  48. },
  49. beforeMount() {
  50. if(process.client) {
  51. const foo = 'bar'
  52. }
  53. },
  54. beforeDestroy() {
  55. if(process.browser) {
  56. const foo = 'bar'
  57. }
  58. }
  59. }
  60. `,
  61. errors: [{
  62. message: 'Unexpected process.server in mounted.',
  63. type: 'MemberExpression'
  64. }, {
  65. message: 'Unexpected process.client in beforeMount.',
  66. type: 'MemberExpression'
  67. }, {
  68. message: 'Unexpected process.browser in beforeDestroy.',
  69. type: 'MemberExpression'
  70. }],
  71. parserOptions
  72. },
  73. {
  74. filename: 'test.vue',
  75. code: `
  76. export default {
  77. mounted() {
  78. if(process['client']) {
  79. const foo = 'bar'
  80. }
  81. },
  82. beforeMount() {
  83. if(process['server']) {
  84. const foo = 'bar'
  85. }
  86. },
  87. beforeDestroy() {
  88. if(process['browser']) {
  89. const foo = 'bar'
  90. }
  91. }
  92. }
  93. `,
  94. errors: [{
  95. message: 'Unexpected process.client in mounted.',
  96. type: 'MemberExpression'
  97. }, {
  98. message: 'Unexpected process.server in beforeMount.',
  99. type: 'MemberExpression'
  100. }, {
  101. message: 'Unexpected process.browser in beforeDestroy.',
  102. type: 'MemberExpression'
  103. }],
  104. parserOptions
  105. }
  106. ]
  107. })