diff --git a/red/runtime/nodes/registry/index.js b/red/runtime/nodes/registry/index.js index 928fe7c76..0a6b9aac8 100644 --- a/red/runtime/nodes/registry/index.js +++ b/red/runtime/nodes/registry/index.js @@ -29,7 +29,12 @@ function init(runtime) { settings = runtime.settings; installer.init(runtime.settings); loader.init(runtime); - registry.init(runtime.settings,loader); + registry.init(settings,loader); +} + +function load() { + registry.load(); + return loader.load(); } function addModule(module) { @@ -52,7 +57,7 @@ function enableNodeSet(typeOrId) { module.exports = { init:init, - load:loader.load, + load:load, clear: registry.clear, registerType: registry.registerNodeConstructor, diff --git a/red/runtime/nodes/registry/registry.js b/red/runtime/nodes/registry/registry.js index aa1e73e2e..74606853e 100644 --- a/red/runtime/nodes/registry/registry.js +++ b/red/runtime/nodes/registry/registry.js @@ -35,11 +35,6 @@ var moduleNodes = {}; function init(_settings,_loader) { settings = _settings; loader = _loader; - if (settings.available()) { - moduleConfigs = loadNodeConfigs(); - } else { - moduleConfigs = {}; - } moduleNodes = {}; nodeTypeToId = {}; nodeConstructors = {}; @@ -48,6 +43,14 @@ function init(_settings,_loader) { Node = require("../Node"); } +function load() { + if (settings.available()) { + moduleConfigs = loadNodeConfigs(); + } else { + moduleConfigs = {}; + } +} + function filterNodeInfo(n) { var r = { id: n.id||n.module+"/"+n.name, @@ -535,6 +538,7 @@ function cleanModuleList() { var registry = module.exports = { init: init, + load: load, clear: clear, registerNodeConstructor: registerNodeConstructor, diff --git a/test/red/runtime/nodes/registry/registry_spec.js b/test/red/runtime/nodes/registry/registry_spec.js index ea57339d6..013b8bd64 100644 --- a/test/red/runtime/nodes/registry/registry_spec.js +++ b/test/red/runtime/nodes/registry/registry_spec.js @@ -75,9 +75,11 @@ describe("red/nodes/registry/registry",function() { - describe('#init', function() { + describe('#init/load', function() { it('loads initial config', function(done) { typeRegistry.init(settingsWithStorageAndInitialConfig); + typeRegistry.getNodeList().should.have.lengthOf(0); + typeRegistry.load(); typeRegistry.getNodeList().should.have.lengthOf(1); done(); }); @@ -113,6 +115,7 @@ describe("red/nodes/registry/registry",function() { }; var expected = JSON.parse('{"node-red":{"name":"node-red","nodes":{"sentiment":{"name":"sentiment","types":["sentiment"],"enabled":true,"module":"node-red"},"inject":{"name":"inject","types":["inject"],"enabled":true,"module":"node-red"}}},"testModule":{"name":"testModule","nodes":{"a-module.js":{"name":"a-module.js","types":["example"],"enabled":true,"module":"testModule"}}}}'); typeRegistry.init(legacySettings); + typeRegistry.load(); legacySettings.set.calledOnce.should.be.true; legacySettings.set.args[0][1].should.eql(expected); done();