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(''),