From 57bc83b2a7f99725c0a25b68efa0df48fc582e46 Mon Sep 17 00:00:00 2001 From: Anna Thomas Date: Thu, 27 Nov 2014 16:42:45 +0000 Subject: [PATCH] Enabling and disabling non-existent nodes throws an error --- red/nodes/registry.js | 16 +++++++++------- test/red/nodes/registry_spec.js | 4 ++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/red/nodes/registry.js b/red/nodes/registry.js index 9e81aa4e4..895a0b241 100644 --- a/red/nodes/registry.js +++ b/red/nodes/registry.js @@ -319,13 +319,15 @@ var registry = (function() { if (!settings.available()) { throw new Error("Settings unavailable"); } + var id = typeOrId; if (nodeTypeToId[typeOrId]) { id = nodeTypeToId[typeOrId]; } - var config = moduleConfigs[getModule(id)].nodes[getNode(id)]; - if (config) { + var config; + try { + config = moduleConfigs[getModule(id)].nodes[getNode(id)]; delete config.err; config.enabled = true; if (!config.loaded) { @@ -334,7 +336,7 @@ var registry = (function() { } nodeConfigCache = null; saveNodeList(); - } else { + } catch (err) { throw new Error("Unrecognised id: "+typeOrId); } return filterNodeInfo(config); @@ -348,14 +350,14 @@ var registry = (function() { if (nodeTypeToId[typeOrId]) { id = nodeTypeToId[typeOrId]; } - var config = moduleConfigs[getModule(id)].nodes[getNode(id)]; - - if (config) { + var config; + try { + config = moduleConfigs[getModule(id)].nodes[getNode(id)]; // TODO: persist setting config.enabled = false; nodeConfigCache = null; saveNodeList(); - } else { + } catch (err) { throw new Error("Unrecognised id: "+id); } return filterNodeInfo(config); diff --git a/test/red/nodes/registry_spec.js b/test/red/nodes/registry_spec.js index 740066e96..ac671c755 100644 --- a/test/red/nodes/registry_spec.js +++ b/test/red/nodes/registry_spec.js @@ -991,14 +991,14 @@ describe('NodeRegistry', function() { }); it('fails to enable/disable non-existent nodes', function(done) { - typeRegistry.init(settings); + typeRegistry.init(settingsWithStorage); typeRegistry.load("wontexist",true).then(function() { var list = typeRegistry.getNodeList(); list.should.be.an.Array.and.be.empty; /*jshint immed: false */ (function() { - typeRegistry.disableNode("123"); + typeRegistry.disableNode("123"); }).should.throw(); /*jshint immed: false */