Pārlūkot izejas kodu

test: tests for ssr template function (#9324)

Evan You 7 gadi atpakaļ
vecāks
revīzija
df064cedd1
1 mainītis faili ar 62 papildinājumiem un 0 dzēšanām
  1. 62 0
      test/ssr/ssr-template.spec.js

+ 62 - 0
test/ssr/ssr-template.spec.js

@@ -134,6 +134,68 @@ describe('SSR: template option', () => {
     })
   })
 
+  it('renderToString w/ template function', done => {
+    const renderer = createRenderer({
+      template: (content, context) => `<html><head>${context.head}</head>${content}</html>`
+    })
+
+    const context = {
+      head: '<meta name="viewport" content="width=device-width">'
+    }
+
+    renderer.renderToString(new Vue({
+      template: '<div>hi</div>'
+    }), context, (err, res) => {
+      expect(err).toBeNull()
+      expect(res).toContain(`<html><head>${context.head}</head><div data-server-rendered="true">hi</div></html>`)
+      done()
+    })
+  })
+
+  it('renderToString w/ template function returning Promise', done => {
+    const renderer = createRenderer({
+      template: (content, context) => new Promise((resolve) => {
+        setTimeout(() => {
+          resolve(`<html><head>${context.head}</head>${content}</html>`)
+        }, 0)
+      })
+    })
+
+    const context = {
+      head: '<meta name="viewport" content="width=device-width">'
+    }
+
+    renderer.renderToString(new Vue({
+      template: '<div>hi</div>'
+    }), context, (err, res) => {
+      expect(err).toBeNull()
+      expect(res).toContain(`<html><head>${context.head}</head><div data-server-rendered="true">hi</div></html>`)
+      done()
+    })
+  })
+
+  it('renderToString w/ template function returning Promise w/ rejection', done => {
+    const renderer = createRenderer({
+      template: () => new Promise((resolve, reject) => {
+        setTimeout(() => {
+          reject(new Error(`foo`))
+        }, 0)
+      })
+    })
+
+    const context = {
+      head: '<meta name="viewport" content="width=device-width">'
+    }
+
+    renderer.renderToString(new Vue({
+      template: '<div>hi</div>'
+    }), context, (err, res) => {
+      expect(err.message).toBe(`foo`)
+      expect(res).toBeUndefined()
+      done()
+    })
+  })
+
   it('renderToStream', done => {
     const renderer = createRenderer({
       template: defaultTemplate