X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/72da90cac0feafb35cac9292105e24f2b5094b45..426d76c295fc768ba039d84aaf37b80f657f3b7d:/src/smartxml/smartxml.test.js diff --git a/src/smartxml/smartxml.test.js b/src/smartxml/smartxml.test.js index 180fa87..289b982 100644 --- a/src/smartxml/smartxml.test.js +++ b/src/smartxml/smartxml.test.js @@ -304,6 +304,27 @@ describe('smartxml', function() { describe('Manipulations', function() { + describe('replacing node with another one', function() { + it('replaces node with another one', function() { + var doc = getDocumentFromXML('
'), + a = doc.root.contents()[0]; + + var c = a.replaceWith({tagName: 'b', attrs: {b:'1'}}); + + expect(doc.root.contents()[0].sameNode(c)); + expect(c.getTagName()).to.equal('b'); + expect(c.getAttr('b')).to.equal('1'); + }); + it('can replace document root', function() { + var doc = getDocumentFromXML('
'); + + var header = doc.root.replaceWith({tagName: 'header'}); + + expect(doc.root.sameNode(header)).to.be.true; + expect(doc.containsNode(header)).to.be.true; + }); + }); + it('merges adjacent text nodes resulting from detaching an element node in between', function() { var doc = getDocumentFromXML('
Alice hasa cat
'), span = doc.root.contents()[1]; @@ -417,8 +438,8 @@ describe('smartxml', function() { lastDiv = section.contents()[section.contents().length -1]; var returned = section.document.wrapNodes({ - element1: aliceText, - element2: lastDiv, + node1: aliceText, + node2: lastDiv, _with: {tagName: 'header'} }); @@ -441,8 +462,8 @@ describe('smartxml', function() { div3 = section.contents()[2]; section.document.wrapNodes({ - element1: div2, - element2: div3, + node1: div2, + node2: div3, _with: {tagName: 'header'} }); @@ -653,6 +674,26 @@ describe('smartxml', function() { expect(event.type).to.equal('nodeMoved'); expect(event.meta.node.sameNode(inserted)).to.be.true; }); + + it('emits nodeDetached and nodeAdded when replacing root node with another', function() { + var doc = getDocumentFromXML(''), + oldRoot = doc.root, + spy = sinon.spy(); + + doc.on('change', spy); + + doc.root.replaceWith({tagName: 'b'}); + + expect(spy.callCount).to.equal(2); + + var event1 = spy.args[0][0], + event2 = spy.args[1][0]; + + expect(event1.type).to.equal('nodeDetached'); + expect(event1.meta.node.sameNode(oldRoot)).to.equal(true, 'root node in nodeDetached event metadata'); + expect(event2.type).to.equal('nodeAdded'); + expect(event2.meta.node.sameNode(doc.root)).to.equal(true, 'new root node in nodelAdded event meta'); + }); }); describe('Traversing', function() {