ssr-basic-renderer.spec.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. })