From 198de8c828e46c2a849c56091146017a9f46f4f0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Aleksander=20=C5=81ukasz?= Date: Mon, 18 Nov 2013 15:57:21 +0100 Subject: [PATCH] smartxml: fix DocumentNode.parent --- src/smartxml/smartxml.js | 6 +++++- src/smartxml/smartxml.test.js | 13 +++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/smartxml/smartxml.js b/src/smartxml/smartxml.js index 18664c7..5ad3010 100644 --- a/src/smartxml/smartxml.js +++ b/src/smartxml/smartxml.js @@ -38,7 +38,11 @@ $.extend(DocumentNode.prototype, { }, parent: function() { - return this.nativeNode.parentNode ? this.document.createElementNode(this.nativeNode.parentNode) : null; + var parentNode = this.nativeNode.parentNode; + if(parentNode && parentNode.nodeType === Node.ELEMENT_NODE) { + return this.document.createElementNode(parentNode); + } + return null; }, after: function(node) { diff --git a/src/smartxml/smartxml.test.js b/src/smartxml/smartxml.test.js index 8154ff5..df35a37 100644 --- a/src/smartxml/smartxml.test.js +++ b/src/smartxml/smartxml.test.js @@ -486,6 +486,19 @@ describe('smartxml', function() { }); }); + describe('Traversing', function() { + describe('Basic', function() { + it('can access node parent', function() { + var doc = getDocumentFromXML(''), + a = doc.root, + b = a.contents()[0]; + + expect(a.parent()).to.equal(null, 'parent of a root is null'); + expect(b.parent().sameNode(a)).to.be.true; + }); + }); + }); + describe('Serializing document to WLXML', function() { it('keeps document intact when no changes have been made', function() { var xmlIn = '
Alice
has
a cat!
', -- 2.20.1