X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/0c57fd826a58a217f499b5084c837fb8ef3f6d4f..84a0c8eeefe4f8ea5da616a0527f1f958cad893c:/src/smartxml/smartxml.test.js?ds=sidebyside diff --git a/src/smartxml/smartxml.test.js b/src/smartxml/smartxml.test.js index b7676e2..b50da7f 100644 --- a/src/smartxml/smartxml.test.js +++ b/src/smartxml/smartxml.test.js @@ -240,6 +240,29 @@ describe('smartxml', function() { }); }); }); + + describe('Putting nodes around', function() { + it('will not allow to put node before or after root node', function() { + var doc = getDocumentFromXML(''), + spy = sinon.spy(), + root = doc.root, + result; + + doc.on('change', spy); + + result = doc.root.before({tagName: 'test'}); + + expect(spy.callCount).to.equal(0); + expect(result).to.undefined; + + result = doc.root.after({tagName: 'test'}); + + expect(spy.callCount).to.equal(0); + expect(result).to.undefined; + + expect(doc.root.sameNode(root)); + }); + }); }); describe('Basic TextNode properties', function() { @@ -650,14 +673,16 @@ describe('smartxml', function() { }); it('keeps parent-describing nodes in place', function() { - var doc = getDocumentFromXML('Alice has a cat'), + var doc = getDocumentFromXML('Alice probably has a cat'), root = doc.root, - x = root.contents()[1]; + x = root.contents()[1], + y = root.contents()[3]; doc.registerExtension({documentNode: {methods: { object: { describesParent: function() { - return this.getTagName() === 'x'; + /* globals Node */ + return this.nodeType === Node.ELEMENT_NODE && this.getTagName() === 'x'; } } }}}); @@ -666,9 +691,11 @@ describe('smartxml', function() { _with: {tagName: 'span', attrs: {'attr1': 'value1'}}, offsetStart: 1, offsetEnd: 4, - textNodeIdx: [0,2] + textNodeIdx: [0,4] }); + expect(x.parent().sameNode(root)).to.be.true; + expect(y.parent().getTagName()).to.equal('span'); }); }); @@ -728,7 +755,7 @@ describe('smartxml', function() { section.document.registerExtension({documentNode: {methods: { object: { describesParent: function() { - return this.getTagName() === 'x'; + return this.nodeType === Node.ELEMENT_NODE && this.getTagName() === 'x'; } } }}}); @@ -740,6 +767,8 @@ describe('smartxml', function() { }); expect(x.parent().sameNode(section)).to.be.true; + expect(aliceText.parent().getTagName()).to.equal('header'); + expect(lastDiv.parent().getTagName()).to.equal('header'); }); });