|
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