X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/a849d4765ded55173cc10ba3e55a483d281b9174..e08ad28198c90ee22657ccc692f4beb161cdf108:/src/smartxml/smartxml.test.js?ds=inline
diff --git a/src/smartxml/smartxml.test.js b/src/smartxml/smartxml.test.js
index 3410407..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() {
@@ -1602,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() {