no-cjs-in-config.test.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /**
  2. * @fileoverview Disallow `require/modules.exports/exports` in `nuxt.config.js`
  3. * @author Xin Du <clark.duxin@gmail.com>
  4. */
  5. 'use strict'
  6. // ------------------------------------------------------------------------------
  7. // Requirements
  8. // ------------------------------------------------------------------------------
  9. const rule = require('../no-cjs-in-config')
  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-cjs-in-config', rule, {
  20. valid: [
  21. {
  22. filename: 'nuxt.config.js',
  23. code: `
  24. import { name } from './package.json'
  25. export default {
  26. mode: 'universal',
  27. name
  28. }
  29. `,
  30. parserOptions
  31. }
  32. ],
  33. invalid: [
  34. {
  35. filename: 'nuxt.config.js',
  36. code: `
  37. const { name } = require('./package.json')
  38. `,
  39. errors: [{
  40. message: 'Unexpected require, please use import instead.',
  41. type: 'Identifier'
  42. }],
  43. parserOptions
  44. },
  45. {
  46. filename: 'nuxt.config.js',
  47. code: `
  48. module.exports = {
  49. mode: 'universal',
  50. name
  51. }
  52. `,
  53. errors: [{
  54. message: 'Unexpected module.exports, please use export default instead.',
  55. type: 'MemberExpression'
  56. }],
  57. parserOptions
  58. },
  59. {
  60. filename: 'nuxt.config.js',
  61. code: `
  62. exports.test = {
  63. mode: 'universal',
  64. name
  65. }
  66. `,
  67. errors: [{
  68. message: 'Unexpected exports, please use export default instead.',
  69. type: 'MemberExpression'
  70. }],
  71. parserOptions
  72. }
  73. ]
  74. })