|
80 | 80 | 'cloned content is not different from source'); |
81 | 81 | }); |
82 | 82 |
|
83 | | - test('nested clone', function() { |
| 83 | + test('clone nested', function() { |
84 | 84 | var imp = document.createElement('template'); |
85 | 85 | var s = 'a<template id="a">b<template id="b">c<template id="c">d</template></template></template>'; |
86 | 86 | imp.innerHTML = s; |
|
108 | 108 | 'deep cloned template.content is empty'); |
109 | 109 | }); |
110 | 110 |
|
| 111 | + test('clone node containing templates', function() { |
| 112 | + var imp = document.createElement('div'); |
| 113 | + var t = document.createElement('template'); |
| 114 | + var s = 'a<template id="a">b<template id="b">c<template id="c">d</template></template></template>'; |
| 115 | + t.innerHTML = s; |
| 116 | + imp.appendChild(t); |
| 117 | + var impClone = imp.cloneNode(true); |
| 118 | + var imp = imp.firstChild; |
| 119 | + var deepClone = impClone.firstChild; |
| 120 | + assert.equal(deepClone.content.childNodes.length, 2, |
| 121 | + 'deep cloned template.content is empty'); |
| 122 | + assert.notEqual(imp.content.firstChild, deepClone.content.firstChild, |
| 123 | + 'cloned content is not different from source'); |
| 124 | + var nested = deepClone.content.lastChild; |
| 125 | + assert.isDefined(nested.content, 'nested cloned template content dne'); |
| 126 | + assert.equal(nested.content.childNodes.length, 2, |
| 127 | + 'deep cloned template.content is empty'); |
| 128 | + nested = nested.content.lastChild; |
| 129 | + assert.isDefined(nested, 'nested cloned template content dne'); |
| 130 | + assert.equal(nested.content.childNodes.length, 2, |
| 131 | + 'deep cloned template.content is empty'); |
| 132 | + nested = nested.content.lastChild; |
| 133 | + assert.isDefined(nested, 'nested cloned template content dne'); |
| 134 | + assert.equal(nested.content.childNodes.length, 1, |
| 135 | + 'deep cloned template.content is empty'); |
| 136 | + }); |
| 137 | + |
111 | 138 | test('importNode', function() { |
112 | 139 | var imp = document.createElement('template'); |
113 | 140 | var s = '<div>Hi</div>'; |
|
124 | 151 | 'cloned content is not different from source'); |
125 | 152 | }); |
126 | 153 |
|
127 | | - test('nested importNode', function() { |
| 154 | + test('importNode: nested', function() { |
128 | 155 | var imp = document.createElement('template'); |
129 | 156 | var s = 'a<template id="a">b<template id="b">c<template id="c">d</template></template></template>'; |
130 | 157 | imp.innerHTML = s; |
|
152 | 179 | 'deep cloned template.content is empty'); |
153 | 180 | }); |
154 | 181 |
|
| 182 | + test('importNode: element containing nested templates', function() { |
| 183 | + var imp = document.createElement('div'); |
| 184 | + var t = document.createElement('template'); |
| 185 | + var s = 'a<template id="a">b<template id="b">c<template id="c">d</template></template></template>'; |
| 186 | + t.innerHTML = s; |
| 187 | + imp.appendChild(t); |
| 188 | + var impClone = document.importNode(imp, true); |
| 189 | + imp = imp.firstChild; |
| 190 | + var deepClone = impClone.firstChild; |
| 191 | + assert.equal(deepClone.content.childNodes.length, 2, |
| 192 | + 'deep cloned template.content is empty'); |
| 193 | + assert.notEqual(imp.content.firstChild, deepClone.content.firstChild, |
| 194 | + 'cloned content is not different from source'); |
| 195 | + var nested = deepClone.content.lastChild; |
| 196 | + assert.isDefined(nested.content, 'nested cloned template content dne'); |
| 197 | + assert.equal(nested.content.childNodes.length, 2, |
| 198 | + 'deep cloned template.content is empty'); |
| 199 | + nested = nested.content.lastChild; |
| 200 | + assert.isDefined(nested, 'nested cloned template content dne'); |
| 201 | + assert.equal(nested.content.childNodes.length, 2, |
| 202 | + 'deep cloned template.content is empty'); |
| 203 | + nested = nested.content.lastChild; |
| 204 | + assert.isDefined(nested, 'nested cloned template content dne'); |
| 205 | + assert.equal(nested.content.childNodes.length, 1, |
| 206 | + 'deep cloned template.content is empty'); |
| 207 | + }); |
| 208 | + |
155 | 209 | }); |
156 | 210 | </script> |
157 | 211 | </body> |
|
0 commit comments