X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/0a765eadd374d46fc8f4ebe88f9f97a4d8fae622..7e4209de3c2972b1ca4ada5e3de85197365f58af:/src/smartxml/smartxml.test.js diff --git a/src/smartxml/smartxml.test.js b/src/smartxml/smartxml.test.js index bfe06ad..08598aa 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; }); }); @@ -836,15 +838,9 @@ describe('smartxml', function() { textNode = doc.root.contents()[0]; extension = {}; - expect(function() { - elementNode.testTransformation(); - }).to.throw(Error); - expect(function() { - textNode.testTransformation(); - }).to.throw(Error); - expect(function() { - doc.testTransformation(); - }).to.throw(Error); + expect(elementNode.testTransformation).to.be.undefined; + expect(textNode.testTransformation).to.be.undefined; + expect(doc.testTransformation).to.be.undefined; expect(doc.testMethod).to.be.undefined; expect(elementNode.testMethod).to.be.undefined; @@ -909,10 +905,24 @@ describe('smartxml', function() { }); it('allows adding transformation to a DocumentNode', function() { - extension = {documentNode: {transformations: { - testTransformation: function() { return this; }, - testTransformation2: {impl: function() { return this;}} - }}}; + extension = { + documentNode: { + transformations: { + testTransformation: function() { return this; }, + testTransformation2: {impl: function() { return this;}} + } + }, + textNode: { + transformations: { + textTestTransformation: function() { return this; } + } + }, + elementNode: { + transformations: { + elementTestTransformation: function() { return this; } + } + } + }; doc.registerExtension(extension); @@ -924,6 +934,63 @@ describe('smartxml', function() { expect(elementNode.testTransformation2().sameNode(elementNode)).to.equal(true, '2'); expect(textNode.testTransformation().sameNode(textNode)).to.equal(true, '3'); expect(textNode.testTransformation2().sameNode(textNode)).to.equal(true, '4'); + + expect(elementNode.elementTestTransformation().sameNode(elementNode)).to.be.true; + expect(elementNode.textTestTransformation).to.be.undefined; + + 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'); }); });