| <html> |
| <link rel="import" href="../resources/mocha.html" /> |
| <link rel="import" href="../resources/chai.html" /> |
| <script> |
| describe('DocumentFragments should remove all children of the fragment before moving children, ', function() { |
| var mutations; |
| var observer; |
| |
| beforeEach(function() { |
| mutations = null; |
| observer = new MutationObserver(function(records) { |
| mutations = records; |
| }); |
| }); |
| |
| function createObservedFragment() { |
| var fragment = document.createDocumentFragment(); |
| fragment.appendChild(document.createElement('b')); |
| fragment.appendChild(document.createElement('i')); |
| observer.observe(fragment, {childList: true}); |
| return fragment; |
| } |
| |
| it('using appendChild', function(done) { |
| var div = document.createElement('div'); |
| observer.observe(div, {childList: true}); |
| div.appendChild(createObservedFragment()); |
| setTimeout(function() { |
| assert.equal(mutations.length, 2); |
| assert.equal(mutations[0].addedNodes.length, 0); |
| assert.equal(mutations[0].removedNodes.length, 2); |
| assert.equal(mutations[1].addedNodes.length, 2); |
| assert.equal(mutations[1].removedNodes.length, 0); |
| done(); |
| }, 0); |
| }); |
| |
| it('using insertBefore', function(done) { |
| var div = document.createElement('div'); |
| div.appendChild(document.createElement('span')); |
| observer.observe(div, {childList: true}); |
| div.insertBefore(createObservedFragment(), div.firstChild); |
| setTimeout(function() { |
| assert.equal(mutations.length, 2); |
| assert.equal(mutations[0].addedNodes.length, 0); |
| assert.equal(mutations[0].removedNodes.length, 2); |
| assert.equal(mutations[1].addedNodes.length, 2); |
| assert.equal(mutations[1].removedNodes.length, 0); |
| done(); |
| }, 0); |
| }); |
| |
| it('using replaceChild', function(done) { |
| var div = document.createElement('div'); |
| div.appendChild(document.createElement('span')); |
| observer.observe(div, {childList: true}); |
| div.replaceChild(createObservedFragment(), div.firstChild); |
| setTimeout(function() { |
| assert.equal(mutations.length, 2); |
| assert.equal(mutations[0].addedNodes.length, 0); |
| assert.equal(mutations[0].removedNodes.length, 2); |
| assert.equal(mutations[1].addedNodes.length, 2); |
| assert.equal(mutations[1].removedNodes.length, 1); |
| done(); |
| }, 0); |
| }); |
| }); |
| </script> |
| </html> |