Skip to content

Commit a2ab3bf

Browse files
yyx990803hefeng
authored and
hefeng
committed
test: tests for ssr template function (vuejs#9324)
1 parent 1d11220 commit a2ab3bf

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

Diff for: test/ssr/ssr-template.spec.js

+62
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,68 @@ describe('SSR: template option', () => {
134134
})
135135
})
136136

137+
it('renderToString w/ template function', done => {
138+
const renderer = createRenderer({
139+
template: (content, context) => `<html><head>${context.head}</head>${content}</html>`
140+
})
141+
142+
const context = {
143+
head: '<meta name="viewport" content="width=device-width">'
144+
}
145+
146+
renderer.renderToString(new Vue({
147+
template: '<div>hi</div>'
148+
}), context, (err, res) => {
149+
expect(err).toBeNull()
150+
expect(res).toContain(`<html><head>${context.head}</head><div data-server-rendered="true">hi</div></html>`)
151+
done()
152+
})
153+
})
154+
155+
it('renderToString w/ template function returning Promise', done => {
156+
const renderer = createRenderer({
157+
template: (content, context) => new Promise((resolve) => {
158+
setTimeout(() => {
159+
resolve(`<html><head>${context.head}</head>${content}</html>`)
160+
}, 0)
161+
})
162+
})
163+
164+
const context = {
165+
head: '<meta name="viewport" content="width=device-width">'
166+
}
167+
168+
renderer.renderToString(new Vue({
169+
template: '<div>hi</div>'
170+
}), context, (err, res) => {
171+
expect(err).toBeNull()
172+
expect(res).toContain(`<html><head>${context.head}</head><div data-server-rendered="true">hi</div></html>`)
173+
done()
174+
})
175+
})
176+
177+
it('renderToString w/ template function returning Promise w/ rejection', done => {
178+
const renderer = createRenderer({
179+
template: () => new Promise((resolve, reject) => {
180+
setTimeout(() => {
181+
reject(new Error(`foo`))
182+
}, 0)
183+
})
184+
})
185+
186+
const context = {
187+
head: '<meta name="viewport" content="width=device-width">'
188+
}
189+
190+
renderer.renderToString(new Vue({
191+
template: '<div>hi</div>'
192+
}), context, (err, res) => {
193+
expect(err.message).toBe(`foo`)
194+
expect(res).toBeUndefined()
195+
done()
196+
})
197+
})
198+
137199
it('renderToStream', done => {
138200
const renderer = createRenderer({
139201
template: defaultTemplate

0 commit comments

Comments
 (0)