ssr-basic-renderer.spec.js 1.8 KB

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