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;
});
});
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;
});
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);
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('<div>text</div>');
+
+ 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');
});
});