X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/0c57fd826a58a217f499b5084c837fb8ef3f6d4f..84a0c8eeefe4f8ea5da616a0527f1f958cad893c:/src/smartxml/smartxml.test.js?ds=inline
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');
});
});