X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/65c64d3696e38bda0e2259d48c8d02978da7a3d8..06ff71dcb6c913a66280ebf812481224ee461f8c:/src/smartxml/smartxml.test.js?ds=sidebyside diff --git a/src/smartxml/smartxml.test.js b/src/smartxml/smartxml.test.js index db9777f..ccaf0ef 100644 --- a/src/smartxml/smartxml.test.js +++ b/src/smartxml/smartxml.test.js @@ -40,6 +40,17 @@ describe('smartxml', function() { doc.loadXML('
'); expect(doc.root.getTagName()).to.equal('header'); }); + + it('knows if it contains an ElementNode in its tree', function() { + var doc = getDocumentFromXML('text'), + root = doc.root, + a = root.contents()[0], + text = root.contents()[1]; + + expect(doc.containsNode(root)).to.equal(true, 'contains its root'); + expect(doc.containsNode(a)).to.equal(true, 'contains Element Node'); + expect(doc.containsNode(text)).to.equal(true, 'contains Text Node'); + }); }); describe('Basic ElementNode properties', function() { @@ -251,6 +262,17 @@ describe('smartxml', function() { describe('Manipulations', function() { + 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]; + + span.detach(); + + var rootContents = doc.root.contents(); + expect(rootContents).to.have.length(1, 'one child left'); + expect(rootContents[0].getText()).to.equal('Alice a cat'); + }); + it('appends element node to another element node', function() { var node1 = elementNodeFromParams({tag: 'div'}), node2 = elementNodeFromParams({tag: 'a'}), @@ -291,6 +313,32 @@ describe('smartxml', function() { expect(node.contents()[2].getText()).to.equal(' a cat!'); }); + it('unwrap single element node from its parent', function() { + var doc = getDocumentFromXML('
'), + div = doc.root, + a = div.contents()[0], + b = a.contents()[0]; + + var parent = b.unwrap(); + + expect(parent.sameNode(div)).to.equal(true, 'returns new parent'); + expect(div.contents()).to.have.length(1, 'root contains only one node'); + expect(div.contents()[0].sameNode(b)).to.equal(true, 'node got unwrapped'); + }); + + it('unwrap single text node from its parent', function() { + var doc = getDocumentFromXML('
Some text!
'), + div = doc.root, + span = div.contents()[1], + text = span.contents()[0]; + + var parent = text.unwrap(); + + expect(parent.sameNode(div)).to.equal(true, 'returns new parent'); + expect(div.contents()).to.have.length(1, 'root contains only one node'); + expect(div.contents()[0].getText()).to.equal('Some text!'); + }); + describe('Wrapping text', function() { it('wraps text spanning multiple sibling TextNodes', function() { var section = elementNodeFromXML('
Alice has a small cat
'),