X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/080240adecd1131b9d3c4e2a0b58a7f922c4ec80..94df6d05a448dd5bd429ef4e4dec14595df2bdae:/src/smartxml/smartxml.test.js?ds=inline diff --git a/src/smartxml/smartxml.test.js b/src/smartxml/smartxml.test.js index 1e778ce..cc2b3cf 100644 --- a/src/smartxml/smartxml.test.js +++ b/src/smartxml/smartxml.test.js @@ -385,6 +385,15 @@ describe('smartxml', function() { describe('Manipulations', function() { + describe('detaching nodes', function() { + it('can detach document root node', function() { + var doc = getDocumentFromXML('
'); + + doc.root.detach(); + expect(doc.root).to.equal(null); + }); + }); + describe('replacing node with another one', function() { it('replaces node with another one', function() { var doc = getDocumentFromXML('
'), @@ -520,12 +529,33 @@ describe('smartxml', function() { }); }); - it('wraps element node with another element node', function() { + it('wraps root element node with another element node', function() { var node = elementNodeFromXML('
'), wrapper = elementNodeFromXML(''); node.wrapWith(wrapper); expect(node.parent().sameNode(wrapper)).to.be.true; + expect(node.document.root.sameNode(wrapper)).to.be.true; + }); + + it('wraps element node with another element node', function() { + var doc = getDocumentFromXML('
'), + div = doc.root.contents()[0]; + + var wrapper = div.wrapWith({tagName: 'wrapper'}); + expect(wrapper.sameNode(doc.root.contents()[0])).to.equal(true, '1'); + expect(div.parent().sameNode(wrapper)).to.equal(true, '2'); + expect(wrapper.contents()[0].sameNode(div)).to.equal(true, '3'); + }); + + it('wraps element outside of document tree', function() { + var doc = getDocumentFromXML('
'), + node = doc.createDocumentNode({tagName: 'node'}); + + node.wrapWith({tagName: 'wrapper'}); + expect(node.parent().getTagName()).to.equal('wrapper'); + expect(node.parent().contents()[0].sameNode(node)).to.be.true; + expect(doc.root.getTagName()).to.equal('section'); }); it('unwraps element node contents', function() { @@ -1112,6 +1142,16 @@ describe('smartxml', function() { expect(siblingParents.node1.sameNode(aliceText)).to.equal(true, 'aliceText'); expect(siblingParents.node2.sameNode(span)).to.equal(true, 'span'); }); + + it('returns node itself for two same nodes', function() { + var doc = getDocumentFromXML('
'), + div = doc.root.contents()[0]; + + var siblingParents = doc.getSiblingParents({node1: div, node2: div}); + expect(!!siblingParents.node1 && !!siblingParents.node2).to.equal(true, 'nodes defined'); + expect(siblingParents.node1.sameNode(div)).to.be.equal(true, 'node1'); + expect(siblingParents.node2.sameNode(div)).to.be.equal(true, 'node2'); + }); }); }); @@ -1592,6 +1632,24 @@ describe('smartxml', function() { expect(doc.root.getAttr('smart')).to.equal('1'); expect(doc.root.getAttr('unaware')).to.equal('1'); }); + + it('can have associated metadata', function() { + var doc = getDocumentFromXML('
'), + metadata = Object.create({}); + + doc.registerExtension({document: {transformations: { + test: function() { + this.trigger('change'); + } + }}}); + + doc.startTransaction(metadata); + doc.test(); + doc.endTransaction(); + + var transaction = doc.undoStack[0]; + expect(transaction.metadata).to.equal(metadata); + }); }); describe('Regression tests', function() {