X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/7f617eae0ff5fae863e1fbc3b4ff527b916b98ca..2ceaf44955f0f54fa0336978586bb8d9f4d7890b:/src/smartxml/smartxml.test.js diff --git a/src/smartxml/smartxml.test.js b/src/smartxml/smartxml.test.js index 0b85383..d2ac4a9 100644 --- a/src/smartxml/smartxml.test.js +++ b/src/smartxml/smartxml.test.js @@ -814,6 +814,64 @@ describe('smartxml', function() { }); }); + describe('Undo/redo', function() { + + it('does work', function() { + var doc = getDocumentFromXML('
Alice
'), + span = doc.root.contents()[0]; + + doc.transform('detach2', {node: span}); + + + doc.undo(); + + expect(doc.root.contents()).to.have.length(1); + expect(doc.root.contents()[0].getTagName()).to.equal('span'); + expect(doc.root.contents()[0].contents()[0].getText()).to.equal('Alice'); + + doc.redo(); + expect(doc.root.contents()).to.have.length(0); + + doc.undo(); + expect(doc.root.contents()).to.have.length(1); + expect(doc.root.contents()[0].getTagName()).to.equal('span'); + expect(doc.root.contents()[0].contents()[0].getText()).to.equal('Alice'); + + }); + it('does work - merged text nodes case', function() { + var doc = getDocumentFromXML('
Alice has a cat.
'), + span = doc.root.contents()[1]; + + doc.transform('detach2', {node: span}); + + + doc.undo(); + + expect(doc.root.contents().length).to.equal(3); + //console.log(doc.toXML()); + expect(doc.root.contents()[1].contents()[0].getText()).to.equal('has'); + + }); + it('dbg - don not store nodes in tranformation state!', function() { + var doc = getDocumentFromXML('
'), + a = doc.root.contents()[0], + b = doc.root.contents()[1]; + + doc.transform('detach2', {node: a}); + doc.transform('detach2', {node: b}); + doc.undo(); + doc.undo(); + expect(doc.root.contents().length).to.equal(2); + expect(doc.root.contents()[0].getTagName()).to.equal('a'); + expect(doc.root.contents()[1].getTagName()).to.equal('b'); + + doc.redo(); + doc.redo(); + expect(doc.root.contents().length).to.equal(0); + + }); + }); + }); }); \ No newline at end of file