X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/5625717737822065383ef29c6b5709e9984c3508..5281c07b13ea63c96602a232e61332fb41ca0779:/src/smartxml/smartxml.test.js diff --git a/src/smartxml/smartxml.test.js b/src/smartxml/smartxml.test.js index 7880017..0826458 100644 --- a/src/smartxml/smartxml.test.js +++ b/src/smartxml/smartxml.test.js @@ -253,9 +253,22 @@ describe('smartxml', function() { it('appends element node to another element node', function() { var node1 = elementNodeFromParams({tag: 'div'}), - node2 = elementNodeFromParams({tag: 'a'}); + node2 = elementNodeFromParams({tag: 'a'}), + node3 = elementNodeFromParams({tag: 'p'}); node1.append(node2); + node1.append(node3); expect(node1.contents()[0].sameNode(node2)).to.be.true; + expect(node1.contents()[1].sameNode(node3)).to.be.true; + }); + + it('prepends element node to another element node', function() { + var node1 = elementNodeFromParams({tag: 'div'}), + node2 = elementNodeFromParams({tag: 'a'}), + node3 = elementNodeFromParams({tag: 'p'}); + node1.prepend(node2); + node1.prepend(node3); + expect(node1.contents()[0].sameNode(node3)).to.be.true; + expect(node1.contents()[1].sameNode(node2)).to.be.true; }); it('wraps element node with another element node', function() { @@ -304,6 +317,55 @@ describe('smartxml', function() { expect(wrapperContents[1].contents()[0].getText()).to.equal('small'); }); }); + + describe('Wrapping Nodes', function() { + it('wraps multiple sibling nodes', function() { + var section = elementNodeFromXML('
Alice
has
a cat
'), + aliceText = section.contents()[0], + firstDiv = section.contents()[1], + lastDiv = section.contents()[section.contents().length -1]; + + var returned = section.document.wrapNodes({ + element1: aliceText, + element2: lastDiv, + _with: {tagName: 'header'} + }); + + var sectionContents = section.contents(), + header = sectionContents[0], + headerContents = header.contents(); + + expect(sectionContents).to.have.length(1); + expect(header.sameNode(returned)).to.equal(true, 'wrapper returned'); + expect(header.parent().sameNode(section)).to.be.true; + expect(headerContents).to.have.length(3); + expect(headerContents[0].sameNode(aliceText)).to.equal(true, 'first node wrapped'); + expect(headerContents[1].sameNode(firstDiv)).to.equal(true, 'second node wrapped'); + expect(headerContents[2].sameNode(lastDiv)).to.equal(true, 'third node wrapped'); + }); + + it('wraps multiple sibling Elements - middle case', function() { + var section = elementNodeFromXML('
'), + div2 = section.contents()[1], + div3 = section.contents()[2]; + + section.document.wrapNodes({ + element1: div2, + element2: div3, + _with: {tagName: 'header'} + }); + + var sectionContents = section.contents(), + header = sectionContents[1], + headerChildren = header.contents(); + + expect(sectionContents).to.have.length(3); + expect(headerChildren).to.have.length(2); + expect(headerChildren[0].sameNode(div2)).to.equal(true, 'first node wrapped'); + expect(headerChildren[1].sameNode(div3)).to.equal(true, 'second node wrapped'); + }); + }); + }); describe('Serializing document to WLXML', function() {