rewriteDefault.spec.ts 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import { rewriteDefault } from '../src'
  2. describe('compiler sfc: rewriteDefault', () => {
  3. test('without export default', () => {
  4. expect(rewriteDefault(`export a = {}`, 'script')).toMatchInlineSnapshot(`
  5. "export a = {}
  6. const script = {}"
  7. `)
  8. })
  9. test('rewrite export default', () => {
  10. expect(
  11. rewriteDefault(`export default {}`, 'script')
  12. ).toMatchInlineSnapshot(`"const script = {}"`)
  13. })
  14. test('rewrite export named default', () => {
  15. expect(
  16. rewriteDefault(
  17. `const a = 1 \n export { a as b, a as default, a as c}`,
  18. 'script'
  19. )
  20. ).toMatchInlineSnapshot(`
  21. "const a = 1
  22. export { a as b, a as c}
  23. const script = a"
  24. `)
  25. })
  26. test('w/ comments', async () => {
  27. expect(rewriteDefault(`// export default\nexport default {}`, 'script'))
  28. .toMatchInlineSnapshot(`
  29. "// export default
  30. const script = {}"
  31. `)
  32. })
  33. test('export named default multiline', () => {
  34. expect(
  35. rewriteDefault(`let App = {}\n export {\nApp as default\n}`, '_sfc_main')
  36. ).toMatchInlineSnapshot(`
  37. "let App = {}
  38. export {
  39. }
  40. const _sfc_main = App"
  41. `)
  42. })
  43. test('export named default multiline /w comments', () => {
  44. expect(
  45. rewriteDefault(
  46. `const a = 1 \n export {\n a as b,\n a as default,\n a as c}\n` +
  47. `// export { myFunction as default }`,
  48. 'script'
  49. )
  50. ).toMatchInlineSnapshot(`
  51. "const a = 1
  52. export {
  53. a as b,
  54. a as c}
  55. // export { myFunction as default }
  56. const script = a"
  57. `)
  58. })
  59. test('export default class', async () => {
  60. expect(rewriteDefault(`export default class Foo {}`, 'script'))
  61. .toMatchInlineSnapshot(`
  62. "class Foo {}
  63. const script = Foo"
  64. `)
  65. })
  66. test('export default class w/ comments', async () => {
  67. expect(
  68. rewriteDefault(`// export default\nexport default class Foo {}`, 'script')
  69. ).toMatchInlineSnapshot(`
  70. "// export default
  71. class Foo {}
  72. const script = Foo"
  73. `)
  74. })
  75. test('export default class w/ comments 2', async () => {
  76. expect(
  77. rewriteDefault(
  78. `export default {}\n` + `// export default class Foo {}`,
  79. 'script'
  80. )
  81. ).toMatchInlineSnapshot(`
  82. "const script = {}
  83. // export default class Foo {}"
  84. `)
  85. })
  86. test('export default class w/ comments 3', async () => {
  87. expect(
  88. rewriteDefault(
  89. `/*\nexport default class Foo {}*/\n` + `export default class Bar {}`,
  90. 'script'
  91. )
  92. ).toMatchInlineSnapshot(`
  93. "/*
  94. export default class Foo {}*/
  95. const script = class Bar {}"
  96. `)
  97. })
  98. })