X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/9e4ef8a51fbe1e5df22334bc63276f9ffbaade73..a849d4765ded55173cc10ba3e55a483d281b9174:/src/smartxml/smartxml.test.js?ds=sidebyside diff --git a/src/smartxml/smartxml.test.js b/src/smartxml/smartxml.test.js index cbef963..3410407 100644 --- a/src/smartxml/smartxml.test.js +++ b/src/smartxml/smartxml.test.js @@ -932,6 +932,7 @@ describe('smartxml', function() { expect(spy.callCount).to.equal(1); expect(event.type).to.equal('nodeMoved'); expect(event.meta.node.sameNode(appended)).to.be.true; + expect(node.document.root.sameNode(event.meta.parent)).to.equal(true, 'previous parent attached to event meta'); }); it('emits nodeAdded event when prepending new node', function() { @@ -1111,6 +1112,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 +1603,34 @@ describe('smartxml', function() { expect(doc.root.getAttr('unaware')).to.equal('1'); }); }); + + describe('Regression tests', function() { + it('redos correctly after running its own undo followed by unaware transformation undo', function() { + var doc = getDocumentFromXML('
'); + + doc.registerExtension({elementNode: {transformations: { + unaware: function() { + this.triggerChangeEvent(); + }, + test: { + impl: function() { + this._$.attr('t', 1); + this.triggerChangeEvent(); + }, + undo: function() { + this._$.attr('t', 0); + } + } + }}}); + doc.root.unaware(); + doc.root.test(); + doc.undo(); + doc.undo(); + doc.redo(); + doc.redo(); + expect(doc.root.getAttr('t')).to.equal('1'); + }); + }); }); });