no-env-in-context.test.js 2.8 KB

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