@@ -134,6 +134,68 @@ describe('SSR: template option', () => {
134
134
} )
135
135
} )
136
136
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
+
137
199
it ( 'renderToStream' , done => {
138
200
const renderer = createRenderer ( {
139
201
template : defaultTemplate
0 commit comments