From 2ea77a940902146d91c854440f49ca847a6cde3f Mon Sep 17 00:00:00 2001 From: Avital Oliver Date: Fri, 20 Jun 2014 12:17:58 -0700 Subject: [PATCH] Even better checks for the arguments to UI.insert --- packages/ui/render.js | 4 +++- packages/ui/render_tests.js | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/ui/render.js b/packages/ui/render.js index 0259f1b459..3867219d93 100644 --- a/packages/ui/render.js +++ b/packages/ui/render.js @@ -173,8 +173,10 @@ UI.insert = function (renderedTemplate, parentElement, nextNode) { // parentElement must be a DOM node. in particular, can't be the // result of a call to `$`. Can't check if `parentElement instanceof // Node` since 'Node' is undefined in IE8. - if (typeof parentElement.nodeType !== 'number') + if (! parentElement || typeof parentElement.nodeType !== 'number') throw new Error("'parentElement' must be a DOM node"); + if (nextNode && typeof nextNode.nodeType !== 'number') // 'nextNode' is optional + throw new Error("'nextNode' must be a DOM node"); if (! renderedTemplate.dom) throw new Error("Expected template rendered with UI.render"); diff --git a/packages/ui/render_tests.js b/packages/ui/render_tests.js index e3ba814fcd..915eff7600 100644 --- a/packages/ui/render_tests.js +++ b/packages/ui/render_tests.js @@ -626,7 +626,10 @@ Tinytest.add("ui - UI.insert fails on jQuery objects", function (test) { }); test.throws(function () { UI.insert(UI.render(tmpl), $('body')); - }, /must be a DOM node/); + }, /'parentElement' must be a DOM node/); + test.throws(function () { + UI.insert(UI.render(tmpl), document.body, $('body')); + }, /'nextNode' must be a DOM node/); }); Tinytest.add("ui - UI.getDataContext", function (test) {