mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
WIP: runtime api for node modules
This commit is contained in:
@@ -213,7 +213,7 @@ describe('Credentials', function() {
|
||||
var settings = {
|
||||
available: function() { return false;}
|
||||
}
|
||||
index.init(settings, storage);
|
||||
index.init({settings:settings, storage:storage});
|
||||
index.registerType('test', TestNode);
|
||||
index.loadFlows().then(function() {
|
||||
var testnode = new TestNode({id:'tab1',type:'test',name:'barney'});
|
||||
|
@@ -59,6 +59,11 @@ describe("red/nodes/index", function() {
|
||||
available: function() { return false }
|
||||
};
|
||||
|
||||
var runtime = {
|
||||
settings: settings,
|
||||
storage: storage
|
||||
};
|
||||
|
||||
function TestNode(n) {
|
||||
index.createNode(this, n);
|
||||
var node = this;
|
||||
@@ -68,7 +73,7 @@ describe("red/nodes/index", function() {
|
||||
}
|
||||
|
||||
it('nodes are initialised with credentials',function(done) {
|
||||
index.init(settings, storage);
|
||||
index.init(runtime);
|
||||
index.registerType('test', TestNode);
|
||||
index.loadFlows().then(function() {
|
||||
var testnode = new TestNode({id:'tab1',type:'test',name:'barney'});
|
||||
@@ -81,7 +86,7 @@ describe("red/nodes/index", function() {
|
||||
});
|
||||
|
||||
it('flows should be initialised',function(done) {
|
||||
index.init(settings, storage);
|
||||
index.init(runtime);
|
||||
index.loadFlows().then(function() {
|
||||
should.deepEqual(testFlows, index.getFlows());
|
||||
done();
|
||||
@@ -168,7 +173,7 @@ describe("red/nodes/index", function() {
|
||||
});
|
||||
|
||||
it(': allows an unused node type to be disabled',function(done) {
|
||||
index.init(settings, storage);
|
||||
index.init(runtime);
|
||||
index.registerType('test', TestNode);
|
||||
index.loadFlows().then(function() {
|
||||
var info = index.disableNode("5678");
|
||||
@@ -182,7 +187,7 @@ describe("red/nodes/index", function() {
|
||||
});
|
||||
|
||||
it(': prevents disabling a node type that is in use',function(done) {
|
||||
index.init(settings, storage);
|
||||
index.init(runtime);
|
||||
index.registerType('test', TestNode);
|
||||
index.loadFlows().then(function() {
|
||||
/*jshint immed: false */
|
||||
@@ -197,7 +202,7 @@ describe("red/nodes/index", function() {
|
||||
});
|
||||
|
||||
it(': prevents disabling a node type that is unknown',function(done) {
|
||||
index.init(settings, storage);
|
||||
index.init(runtime);
|
||||
index.registerType('test', TestNode);
|
||||
index.loadFlows().then(function() {
|
||||
/*jshint immed: false */
|
||||
@@ -250,7 +255,7 @@ describe("red/nodes/index", function() {
|
||||
});
|
||||
|
||||
it(': prevents removing a module that is in use',function(done) {
|
||||
index.init(settings, storage);
|
||||
index.init(runtime);
|
||||
index.registerType('test', TestNode);
|
||||
index.loadFlows().then(function() {
|
||||
/*jshint immed: false */
|
||||
@@ -265,7 +270,7 @@ describe("red/nodes/index", function() {
|
||||
});
|
||||
|
||||
it(': prevents removing a module that is unknown',function(done) {
|
||||
index.init(settings, storage);
|
||||
index.init(runtime);
|
||||
index.registerType('test', TestNode);
|
||||
index.loadFlows().then(function() {
|
||||
/*jshint immed: false */
|
||||
|
@@ -44,7 +44,7 @@ describe("red/nodes/registry/loader",function() {
|
||||
})
|
||||
describe("#init",function() {
|
||||
it("init",function() {
|
||||
loader.init({});
|
||||
loader.init({events:{on:function(){},removeListener:function(){}}});
|
||||
localfilesystem.init.called.should.be.true;
|
||||
});
|
||||
});
|
||||
@@ -53,7 +53,7 @@ describe("red/nodes/registry/loader",function() {
|
||||
it("load empty set without settings available", function(done) {
|
||||
stubs.push(sinon.stub(localfilesystem,"getNodeFiles", function(){ return {};}));
|
||||
stubs.push(sinon.stub(registry,"saveNodeList", function(){ return {};}));
|
||||
loader.init({available:function(){return false;}});
|
||||
loader.init({events:{on:function(){},removeListener:function(){}},settings:{available:function(){return false;}}});
|
||||
loader.load("foo",true).then(function() {
|
||||
localfilesystem.getNodeFiles.called.should.be.true;
|
||||
localfilesystem.getNodeFiles.lastCall.args[0].should.eql('foo');
|
||||
@@ -65,7 +65,7 @@ describe("red/nodes/registry/loader",function() {
|
||||
it("load empty set with settings available triggers registery save", function(done) {
|
||||
stubs.push(sinon.stub(localfilesystem,"getNodeFiles", function(){ return {};}));
|
||||
stubs.push(sinon.stub(registry,"saveNodeList", function(){ return {};}));
|
||||
loader.init({available:function(){return true;}});
|
||||
loader.init({events:{on:function(){},removeListener:function(){}},settings:{available:function(){return true;}}});
|
||||
loader.load("foo",true).then(function() {
|
||||
registry.saveNodeList.called.should.be.true;
|
||||
done();
|
||||
@@ -96,7 +96,7 @@ describe("red/nodes/registry/loader",function() {
|
||||
stubs.push(sinon.stub(registry,"getNodeInfo", function(){ return null; }));
|
||||
|
||||
stubs.push(sinon.stub(nodes,"registerType"));
|
||||
loader.init({available:function(){return true;}});
|
||||
loader.init({events:{on:function(){},removeListener:function(){}},settings:{available:function(){return true;}}});
|
||||
loader.load().then(function(result) {
|
||||
registry.addNodeSet.called.should.be.true;
|
||||
registry.addNodeSet.lastCall.args[0].should.eql("node-red/TestNode1");
|
||||
@@ -143,7 +143,7 @@ describe("red/nodes/registry/loader",function() {
|
||||
// This module isn't already loaded
|
||||
stubs.push(sinon.stub(registry,"getNodeInfo", function(){ return null; }));
|
||||
stubs.push(sinon.stub(nodes,"registerType"));
|
||||
loader.init({available:function(){return true;}});
|
||||
loader.init({events:{on:function(){},removeListener:function(){}},settings:{available:function(){return true;}}});
|
||||
loader.load().then(function(result) {
|
||||
registry.addNodeSet.called.should.be.true;
|
||||
registry.addNodeSet.lastCall.args[0].should.eql("node-red/MultipleNodes1");
|
||||
@@ -194,7 +194,7 @@ describe("red/nodes/registry/loader",function() {
|
||||
stubs.push(sinon.stub(registry,"getNodeInfo", function(){ return null; }));
|
||||
|
||||
stubs.push(sinon.stub(nodes,"registerType"));
|
||||
loader.init({available:function(){return true;}});
|
||||
loader.init({events:{on:function(){},removeListener:function(){}},settings:{available:function(){return true;}}});
|
||||
loader.load().then(function(result) {
|
||||
registry.addNodeSet.called.should.be.true;
|
||||
registry.addNodeSet.lastCall.args[0].should.eql("node-red/TestNode2");
|
||||
@@ -243,7 +243,7 @@ describe("red/nodes/registry/loader",function() {
|
||||
stubs.push(sinon.stub(registry,"getNodeInfo", function(){ return null; }));
|
||||
|
||||
stubs.push(sinon.stub(nodes,"registerType"));
|
||||
loader.init({available:function(){return true;}});
|
||||
loader.init({events:{on:function(){},removeListener:function(){}},settings:{available:function(){return true;}}});
|
||||
loader.load().then(function(result) {
|
||||
registry.addNodeSet.called.should.be.true;
|
||||
registry.addNodeSet.lastCall.args[0].should.eql("node-red/TestNode3");
|
||||
@@ -290,7 +290,7 @@ describe("red/nodes/registry/loader",function() {
|
||||
stubs.push(sinon.stub(registry,"getNodeInfo", function(){ return null; }));
|
||||
|
||||
stubs.push(sinon.stub(nodes,"registerType"));
|
||||
loader.init({available:function(){return true;}});
|
||||
loader.init({events:{on:function(){},removeListener:function(){}},settings:{available:function(){return true;}}});
|
||||
loader.load().then(function(result) {
|
||||
registry.addNodeSet.called.should.be.true;
|
||||
registry.addNodeSet.lastCall.args[0].should.eql("node-red/DoesNotExist");
|
||||
@@ -317,7 +317,7 @@ describe("red/nodes/registry/loader",function() {
|
||||
|
||||
describe("#addModule",function() {
|
||||
it("throws error if settings unavailable", function() {
|
||||
loader.init({available:function(){return false;}});
|
||||
loader.init({events:{on:function(){},removeListener:function(){}},settings:{available:function(){return false;}}});
|
||||
/*jshint immed: false */
|
||||
(function(){
|
||||
loader.addModule("test-module");
|
||||
@@ -326,7 +326,7 @@ describe("red/nodes/registry/loader",function() {
|
||||
|
||||
it("returns rejected error if module already loaded", function(done) {
|
||||
stubs.push(sinon.stub(registry,"getModuleInfo",function(){return{}}));
|
||||
loader.init({available:function(){return true;}});
|
||||
loader.init({events:{on:function(){},removeListener:function(){}},settings:{available:function(){return true;}}});
|
||||
|
||||
loader.addModule("test-module").otherwise(function(err) {
|
||||
err.code.should.eql("module_already_loaded");
|
||||
@@ -338,7 +338,7 @@ describe("red/nodes/registry/loader",function() {
|
||||
stubs.push(sinon.stub(localfilesystem,"getModuleFiles",function() {
|
||||
throw new Error("failure");
|
||||
}));
|
||||
loader.init({available:function(){return true;}});
|
||||
loader.init({events:{on:function(){},removeListener:function(){}},settings:{available:function(){return true;}}});
|
||||
loader.addModule("test-module").otherwise(function(err) {
|
||||
err.message.should.eql("failure");
|
||||
done();
|
||||
@@ -370,7 +370,7 @@ describe("red/nodes/registry/loader",function() {
|
||||
stubs.push(sinon.stub(registry,"saveNodeList", function(){ return "a node list" }));
|
||||
stubs.push(sinon.stub(registry,"addNodeSet", function(){ return }));
|
||||
stubs.push(sinon.stub(nodes,"registerType"));
|
||||
loader.init({available:function(){return true;}});
|
||||
loader.init({events:{on:function(){},removeListener:function(){}},settings:{available:function(){return true;}}});
|
||||
loader.addModule("TestNodeModule").then(function(result) {
|
||||
result.should.eql("a node list");
|
||||
registry.addNodeSet.calledOnce.should.be.true;
|
||||
@@ -420,7 +420,7 @@ describe("red/nodes/registry/loader",function() {
|
||||
stubs.push(sinon.stub(registry,"saveNodeList", function(){ return "a node list" }));
|
||||
stubs.push(sinon.stub(registry,"addNodeSet", function(){ return }));
|
||||
stubs.push(sinon.stub(nodes,"registerType"));
|
||||
loader.init({available:function(){return true;}});
|
||||
loader.init({events:{on:function(){},removeListener:function(){}},version: function() { return "0.12.0"}, settings:{available:function(){return true;}}});
|
||||
loader.addModule("TestNodeModule").then(function(result) {
|
||||
result.should.eql("a node list");
|
||||
registry.addNodeSet.called.should.be.false;
|
||||
|
@@ -45,7 +45,7 @@ describe("red/nodes/registry/localfilesystem",function() {
|
||||
}
|
||||
describe("#getNodeFiles",function() {
|
||||
it("Finds all the node files in the resources tree",function(done) {
|
||||
localfilesystem.init({});
|
||||
localfilesystem.init({events:{emit:function(){}},settings:{}});
|
||||
var nodeList = localfilesystem.getNodeFiles(resourcesDir,true);
|
||||
nodeList.should.have.a.property("node-red");
|
||||
var nm = nodeList['node-red'];
|
||||
@@ -56,7 +56,7 @@ describe("red/nodes/registry/localfilesystem",function() {
|
||||
done();
|
||||
});
|
||||
it("Excludes node files from settings",function(done) {
|
||||
localfilesystem.init({nodesExcludes:['TestNode1.js']});
|
||||
localfilesystem.init({events:{emit:function(){}},settings:{nodesExcludes:['TestNode1.js']}});
|
||||
var nodeList = localfilesystem.getNodeFiles(resourcesDir,true);
|
||||
nodeList.should.have.a.property("node-red");
|
||||
var nm = nodeList['node-red'];
|
||||
@@ -66,7 +66,7 @@ describe("red/nodes/registry/localfilesystem",function() {
|
||||
done();
|
||||
});
|
||||
it("Finds nodes in userDir/nodes",function(done) {
|
||||
localfilesystem.init({userDir:userDir});
|
||||
localfilesystem.init({events:{emit:function(){}},settings:{userDir:userDir}});
|
||||
var nodeList = localfilesystem.getNodeFiles(__dirname,true);
|
||||
nodeList.should.have.a.property("node-red");
|
||||
var nm = nodeList['node-red'];
|
||||
@@ -77,7 +77,7 @@ describe("red/nodes/registry/localfilesystem",function() {
|
||||
});
|
||||
|
||||
it("Finds nodes in settings.nodesDir (string)",function(done) {
|
||||
localfilesystem.init({nodesDir:userDir});
|
||||
localfilesystem.init({events:{emit:function(){}},settings:{nodesDir:userDir}});
|
||||
var nodeList = localfilesystem.getNodeFiles(__dirname,true);
|
||||
nodeList.should.have.a.property("node-red");
|
||||
var nm = nodeList['node-red'];
|
||||
@@ -87,7 +87,7 @@ describe("red/nodes/registry/localfilesystem",function() {
|
||||
done();
|
||||
});
|
||||
it("Finds nodes in settings.nodesDir (array)",function(done) {
|
||||
localfilesystem.init({nodesDir:[userDir]});
|
||||
localfilesystem.init({events:{emit:function(){}},settings:{nodesDir:[userDir]}});
|
||||
var nodeList = localfilesystem.getNodeFiles(__dirname,true);
|
||||
nodeList.should.have.a.property("node-red");
|
||||
var nm = nodeList['node-red'];
|
||||
@@ -106,7 +106,7 @@ describe("red/nodes/registry/localfilesystem",function() {
|
||||
}
|
||||
return _join.apply(null,arguments);
|
||||
}));
|
||||
localfilesystem.init({});
|
||||
localfilesystem.init({events:{emit:function(){}},settings:{}});
|
||||
var nodeList = localfilesystem.getNodeFiles(moduleDir,false);
|
||||
nodeList.should.have.a.property("node-red");
|
||||
var nm = nodeList['node-red'];
|
||||
@@ -126,6 +126,9 @@ describe("red/nodes/registry/localfilesystem",function() {
|
||||
|
||||
done();
|
||||
});
|
||||
it.skip("finds locales directory");
|
||||
it.skip("finds icon path directory");
|
||||
|
||||
});
|
||||
describe("#getModuleFiles",function() {
|
||||
it("gets a nodes module files",function(done) {
|
||||
@@ -138,7 +141,7 @@ describe("red/nodes/registry/localfilesystem",function() {
|
||||
}
|
||||
return _join.apply(null,arguments);
|
||||
}));
|
||||
localfilesystem.init({},moduleDir,true);
|
||||
localfilesystem.init({events:{emit:function(){}},settings:{}},moduleDir,true);
|
||||
var nodeModule = localfilesystem.getModuleFiles('TestNodeModule');
|
||||
nodeModule.should.have.a.property('TestNodeModule');
|
||||
nodeModule['TestNodeModule'].should.have.a.property('name','TestNodeModule');
|
||||
@@ -162,12 +165,14 @@ describe("red/nodes/registry/localfilesystem",function() {
|
||||
}
|
||||
return _join.apply(null,arguments);
|
||||
}));
|
||||
localfilesystem.init({},moduleDir,true);
|
||||
localfilesystem.init({events:{emit:function(){}},settings:{}},moduleDir,true);
|
||||
/*jshint immed: false */
|
||||
(function(){
|
||||
localfilesystem.getModuleFiles('WontExistModule');
|
||||
}).should.throw();
|
||||
done();
|
||||
});
|
||||
it.skip("finds locales directory");
|
||||
it.skip("finds icon path directory");
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user