2
0

ssr-basic-renderer.spec.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // @vitest-environment node
  2. import Vue from 'vue'
  3. import renderToString from 'server/index-basic'
  4. import { _it } from './utils'
  5. describe('SSR: basicRenderer', () => {
  6. _it('should work', done => {
  7. renderToString(
  8. new Vue({
  9. template: `
  10. <div>
  11. <p class="hi">yoyo</p>
  12. <div id="ho" :class="{ red: isRed }"></div>
  13. <span>{{ test }}</span>
  14. <input :value="test">
  15. <img :src="imageUrl">
  16. <test></test>
  17. <test-async></test-async>
  18. </div>
  19. `,
  20. data: {
  21. test: 'hi',
  22. isRed: true,
  23. imageUrl: 'https://vuejs.org/images/logo.png'
  24. },
  25. components: {
  26. test: {
  27. render() {
  28. return this.$createElement('div', { class: ['a'] }, 'test')
  29. }
  30. },
  31. testAsync(resolve) {
  32. resolve({
  33. render() {
  34. return this.$createElement(
  35. 'span',
  36. { class: ['b'] },
  37. 'testAsync'
  38. )
  39. }
  40. })
  41. }
  42. }
  43. }),
  44. (err, result) => {
  45. expect(err).toBeNull()
  46. expect(result).toContain(
  47. '<div data-server-rendered="true">' +
  48. '<p class="hi">yoyo</p> ' +
  49. '<div id="ho" class="red"></div> ' +
  50. '<span>hi</span> ' +
  51. '<input value="hi"> ' +
  52. '<img src="https://vuejs.org/images/logo.png"> ' +
  53. '<div class="a">test</div> ' +
  54. '<span class="b">testAsync</span>' +
  55. '</div>'
  56. )
  57. done()
  58. }
  59. )
  60. })
  61. // #5941
  62. _it('should work properly when accessing $ssrContext in root component', done => {
  63. let ssrContext
  64. renderToString(
  65. new Vue({
  66. template: `
  67. <div></div>
  68. `,
  69. created() {
  70. ssrContext = this.$ssrContext
  71. }
  72. }),
  73. err => {
  74. expect(err).toBeNull()
  75. expect(ssrContext).toBeUndefined()
  76. done()
  77. }
  78. )
  79. })
  80. })