@@ -89,6 +89,35 @@ test("unmount middle child, should show only the last title", () => {
8989 dispose ( ) ;
9090} ) ;
9191
92+ test ( "unmount last child, should show only the second last title" , ( ) => {
93+ let div = document . createElement ( "div" ) ;
94+ const snapshot1 = "<title>Title 3</title>" ;
95+ const snapshot2 = "<title>Title 2</title>" ;
96+ const [ visible , setVisible ] = createSignal ( true ) ;
97+ const dispose = render (
98+ ( ) => (
99+ < MetaProvider >
100+ < div >
101+ < Title > Title 1</ Title >
102+ </ div >
103+ < div >
104+ < Title > Title 2</ Title >
105+ </ div >
106+ < Show when = { visible ( ) } >
107+ < div >
108+ < Title > Title 3</ Title >
109+ </ div >
110+ </ Show >
111+ </ MetaProvider >
112+ ) ,
113+ div
114+ ) ;
115+ expect ( document . head . innerHTML ) . toBe ( snapshot1 ) ;
116+ setVisible ( false ) ;
117+ expect ( document . head . innerHTML ) . toBe ( snapshot2 ) ;
118+ dispose ( ) ;
119+ } ) ;
120+
92121test ( "hydrates only the last title" , ( ) => {
93122 hydrationScript ( ) ;
94123 let div = document . createElement ( "div" ) ;
@@ -218,7 +247,7 @@ test("renders only the last meta with the same name", () => {
218247 const snapshot1 = '<meta><meta name="name1">' ;
219248 const snapshot2 = '<meta><meta name="name1">' ;
220249 const snapshot3 = '<meta name="name1"><meta>' ;
221-
250+
222251 const [ visible1 , setVisible1 ] = createSignal ( false ) ;
223252 const [ visible2 , setVisible2 ] = createSignal ( false ) ;
224253 const dispose = render (
@@ -279,16 +308,8 @@ test("renders both meta with the same name/property but different other attribut
279308 const dispose = render (
280309 ( ) => (
281310 < MetaProvider >
282- < Meta
283- name = "theme-color"
284- media = "(prefers-color-scheme: light)"
285- content = "#fff"
286- />
287- < Meta
288- name = "theme-color"
289- media = "(prefers-color-scheme: dark)"
290- content = "#000"
291- />
311+ < Meta name = "theme-color" media = "(prefers-color-scheme: light)" content = "#fff" />
312+ < Meta name = "theme-color" media = "(prefers-color-scheme: dark)" content = "#000" />
292313 </ MetaProvider >
293314 ) ,
294315 div
@@ -307,7 +328,7 @@ test("throws error if head tag is rendered without MetaProvider", () => {
307328test ( "doesn't create any effect on removal" , ( ) => {
308329 let div = document . createElement ( "div" ) ;
309330
310- const [ show , setShow ] = createSignal ( true ) ;
331+ const [ show , setShow ] = createSignal ( true ) ;
311332 const showAndTest = ( ) => {
312333 expect ( getOwner ( ) ?. owner ) . toBeTruthy ( ) ;
313334 return show ( ) ;
@@ -317,7 +338,9 @@ test("doesn't create any effect on removal", () => {
317338 ( ) => (
318339 < MetaProvider >
319340 < Show when = { show ( ) } >
320- < Title > Something { showAndTest ( ) } that forces the Solid compiler to create a memo here</ Title >
341+ < Title >
342+ Something { showAndTest ( ) } that forces the Solid compiler to create a memo here
343+ </ Title >
321344 </ Show >
322345 </ MetaProvider >
323346 ) ,
@@ -330,7 +353,8 @@ test("doesn't create any effect on removal", () => {
330353
331354test ( "Escaping the title tag" , ( ) => {
332355 let div = document . createElement ( "div" ) ;
333- const snapshot = '<title>Hello</title><script>alert("inject");</script><title> World</title>' ;
356+ const snapshot =
357+ '<title>Hello</title><script>alert("inject");</script><title> World</title>' ;
334358 const dispose = render (
335359 ( ) => (
336360 < MetaProvider >
@@ -361,4 +385,4 @@ test("Escaping the title meta", () => {
361385 ) ;
362386 expect ( document . head . innerHTML ) . toBe ( snapshot ) ;
363387 dispose ( ) ;
364- } ) ;
388+ } ) ;
0 commit comments