@@ -261,6 +261,112 @@ describe('Extend', () => {
261
261
} ) ;
262
262
} ) ;
263
263
264
+ it ( 'should extend layout with multiple blocks' , ( ) => {
265
+ mfs . writeFileSync ( './layout.html' , `
266
+ <div>
267
+ <block name="content"></block>
268
+ <hr>
269
+ <block name="content"></block>
270
+ <hr>
271
+ <block name="content"></block>
272
+ </div>
273
+ ` )
274
+
275
+ return init ( `
276
+ <extends src="layout.html">
277
+ <block name="content"><p>content</p></block>
278
+ </extends>
279
+ ` ) . then ( html => {
280
+ expect ( html ) . toBe ( cleanHtml ( `
281
+ <div>
282
+ <p>content</p>
283
+ <hr>
284
+ <p>content</p>
285
+ <hr>
286
+ <p>content</p>
287
+ </div>
288
+ ` ) )
289
+ } ) ;
290
+ } ) ;
291
+
292
+ it ( 'should render the last <block> if multiple <block> tags with the same name are declared in <extends>' , ( ) => {
293
+ mfs . writeFileSync ( './layout.html' , `
294
+ <div>
295
+ <block name="content"></block>
296
+ <hr>
297
+ <block name="content"></block>
298
+ <hr>
299
+ <block name="content"></block>
300
+ </div>
301
+ ` )
302
+
303
+ return init ( `
304
+ <extends src="layout.html">
305
+ <block name="content"><p>1</p></block>
306
+ <block name="content"><p>2</p></block>
307
+ <block name="content"><p>3</p></block>
308
+ </extends>
309
+ ` ) . then ( html => {
310
+ expect ( html ) . toBe ( cleanHtml ( `
311
+ <div>
312
+ <p>3</p>
313
+ <hr>
314
+ <p>3</p>
315
+ <hr>
316
+ <p>3</p>
317
+ </div>
318
+ ` ) )
319
+ } ) ;
320
+ } ) ;
321
+
322
+ it ( 'should extends layout multiple times' , ( ) => {
323
+ mfs . writeFileSync ( './layout.html' , `
324
+ <div>
325
+ <block name="content"></block>
326
+ <hr>
327
+ <block name="content"></block>
328
+ <hr>
329
+ <block name="content"></block>
330
+ </div>
331
+ ` )
332
+
333
+ return init ( `
334
+ <extends src="layout.html">
335
+ <block name="content"><p>1</p></block>
336
+ </extends>
337
+ <extends src="layout.html">
338
+ <block name="content"><p>2</p></block>
339
+ </extends>
340
+ <extends src="layout.html">
341
+ <block name="content"><p>3</p></block>
342
+ </extends>
343
+ ` ) . then ( html => {
344
+ expect ( html ) . toBe ( cleanHtml ( `
345
+ <div>
346
+ <p>1</p>
347
+ <hr>
348
+ <p>1</p>
349
+ <hr>
350
+ <p>1</p>
351
+ </div>
352
+ <div>
353
+ <p>2</p>
354
+ <hr>
355
+ <p>2</p>
356
+ <hr>
357
+ <p>2</p>
358
+ </div>
359
+ <div>
360
+ <p>3</p>
361
+ <hr>
362
+ <p>3</p>
363
+ <hr>
364
+ <p>3</p>
365
+ </div>
366
+ ` ) )
367
+ } ) ;
368
+ } ) ;
369
+
264
370
it ( 'should throw an error if <extends> has no "src"' , ( ) => {
265
371
return assertError (
266
372
init ( '<extends><block name="content"></block></extends>' ) ,
0 commit comments