Skip to content

Commit 75ba49b

Browse files
committed
test: add test for layout with multiple blocks
1 parent 7758092 commit 75ba49b

File tree

1 file changed

+106
-0
lines changed

1 file changed

+106
-0
lines changed

test/extend.js

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,112 @@ describe('Extend', () => {
261261
});
262262
});
263263

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+
264370
it('should throw an error if <extends> has no "src"', () => {
265371
return assertError(
266372
init('<extends><block name="content"></block></extends>'),

0 commit comments

Comments
 (0)