X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/be657bf05cf1a986983b7e5583f32db116f9ebe9..b0bea8d363c03e64a67eb18c4e8702c69ecb72cc:/src/smartxml/smartxml.test.js diff --git a/src/smartxml/smartxml.test.js b/src/smartxml/smartxml.test.js index 3175ae9..991f1af 100644 --- a/src/smartxml/smartxml.test.js +++ b/src/smartxml/smartxml.test.js @@ -769,7 +769,9 @@ describe('smartxml', function() { c = b.contents()[0]; var parents = c.parents(); - expect(parents).to.eql([b,a]); + // @@ + expect(parents[0].sameNode(b)).to.be.true; + expect(parents[1].sameNode(a)).to.be.true; }); }); @@ -939,65 +941,180 @@ describe('smartxml', function() { expect(textNode.textTestTransformation().sameNode(textNode)).to.be.true; expect(textNode.elementTestTransfomation).to.be.undefined; }); + + it('allows text/element node methods and transformations to access node and transormations on document node', function() { + + var doc = getDocumentFromXML('
text
'); + + doc.registerExtension({ + documentNode: { + methods: { + test: function() { + return 'super'; + } + }, + transformations: { + testT: function() { + return 'super_trans'; + } + } + }, + elementNode: { + methods: { + test: function() { + return 'element_sub_' + this.__super__.test(); + } + }, + transformations: { + testT: function() { + return 'element_trans_sub_' + this.__super__.testT(); + } + } + }, + textNode: { + methods: { + test: function() { + return 'text_sub_' + this.__super__.test(); + } + }, + transformations: { + testT: function() { + return 'text_trans_sub_' + this.__super__.testT(); + } + } + } + }); + + var textNode = doc.root.contents()[0]; + + expect(doc.root.test()).to.equal('element_sub_super'); + expect(textNode.test()).to.equal('text_sub_super'); + expect(doc.root.testT()).to.equal('element_trans_sub_super_trans'); + expect(textNode.testT()).to.equal('text_trans_sub_super_trans'); + }); }); - // describe('Undo/redo', function() { + describe('Undo/redo', function() { + + it('smoke tests', function() { + var doc = getDocumentFromXML('
Alice
'), + textNode = doc.root.contents()[0], + result; + + expect(doc.undoStack).to.have.length(0); + + textNode.wrapWith({tagName: 'span', start:1, end:2}); + expect(doc.undoStack).to.have.length(1, '1'); + expect(doc.toXML()).to.equal('
Alice
'); + + doc.undo(); + expect(doc.undoStack).to.have.length(0, '2'); + expect(doc.toXML()).to.equal('
Alice
'); + + debugger; + doc.redo(); + expect(doc.undoStack).to.have.length(1, '3'); + expect(doc.toXML()).to.equal('
Alice
'); + + doc.undo(); + expect(doc.undoStack).to.have.length(0, '4'); + expect(doc.toXML()).to.equal('
Alice
'); + + doc.undo(); + expect(doc.undoStack).to.have.length(0, '5'); + expect(doc.toXML()).to.equal('
Alice
'); + }); - // it('does work', function() { - // var doc = getDocumentFromXML('
Alice
'), - // span = doc.root.contents()[0]; + it('smoke tests 2', function() { + var doc = getDocumentFromXML('
Alice
'), + textNode = doc.root.contents()[0], + path = textNode.getPath(), + result; - // span.transform('smartxml.detach'); + debugger; + textNode.setText('Alice '); + textNode.setText('Alice h'); + textNode.setText('Alice ha'); + textNode.setText('Alice has'); + expect(textNode.getText()).to.equal('Alice has'); - // doc.undo(); + doc.undo(); + expect(doc.root.contents()[0].getText()).to.equal('Alice ha', '1'); - // 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.undo(); + expect(doc.root.contents()[0].getText()).to.equal('Alice h', '2'); - // doc.redo(); - // expect(doc.root.contents()).to.have.length(0); + doc.redo(); + expect(doc.root.contents()[0].getText()).to.equal('Alice ha', '3'); - // 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()[0].getText()).to.equal('Alice has', '4'); - // }); - // it('does work - merged text nodes case', function() { - // var doc = getDocumentFromXML('
Alice has a cat.
'), - // span = doc.root.contents()[1]; + doc.undo(); + doc.undo(); + textNode = doc.getNodeByPath(path); + textNode.setText('Cat'); + doc.undo(); + textNode = doc.getNodeByPath(path); + expect(textNode.getText()).to.equal('Alice h'); + }); - // span.transform('smartxml.detach'); + // it('does work', function() { + // var doc = getDocumentFromXML('
Alice
'), + // span = doc.root.contents()[0]; + // span.transform('smartxml.detach'); - // 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'); + // doc.undo(); - // }); - // it('dbg - don not store nodes in tranformation state!', function() { - // var doc = getDocumentFromXML('
'), - // a = doc.root.contents()[0], - // b = doc.root.contents()[1]; + // 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'); - // a.transform('smartxml.detach'); - // b.transform('smartxml.detach'); - // 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(); + // expect(doc.root.contents()).to.have.length(0); - // doc.redo(); - // doc.redo(); - // expect(doc.root.contents().length).to.equal(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]; + + // span.transform('smartxml.detach'); + + + // 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]; + + // a.transform('smartxml.detach'); + // b.transform('smartxml.detach'); + // 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); + + // }); + }); });