smartxml: Fixing Document.containsNode
authorAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Tue, 19 Nov 2013 09:23:35 +0000 (10:23 +0100)
committerAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Tue, 19 Nov 2013 09:23:35 +0000 (10:23 +0100)
src/smartxml/smartxml.js
src/smartxml/smartxml.test.js

index a357977..6e754de 100644 (file)
@@ -358,7 +358,7 @@ $.extend(Document.prototype, Backbone.Events, {
     },
 
     containsNode: function(node) {
-        return node._$.parents().index(this.root._$) !== -1;
+        return this.root && (node.nativeNode === this.root.nativeNode || node._$.parents().index(this.root._$) !== -1);
     },
 
     wrapNodes: function(params) {
index db9777f..2666ae2 100644 (file)
@@ -40,6 +40,17 @@ describe('smartxml', function() {
             doc.loadXML('<header></header>');
             expect(doc.root.getTagName()).to.equal('header');
         });
+
+        it('knows if it contains an ElementNode in its tree', function() {
+            var doc = getDocumentFromXML('<root><a></a>text</root>'),
+                root = doc.root,
+                a = root.contents()[0],
+                text = root.contents()[1];
+
+            expect(doc.containsNode(root)).to.equal(true, 'contains its root');
+            expect(doc.containsNode(a)).to.equal(true, 'contains Element Node');
+            expect(doc.containsNode(text)).to.equal(true, 'contains Text Node');
+        });
     });
 
     describe('Basic ElementNode properties', function() {