mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Registry tests for plugins and enable/disable in CLI
This commit is contained in:
parent
deeaa09360
commit
8d16f3c8be
@ -405,6 +405,108 @@ describe('NodeRegistry', function() {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('returns plugins list', function(done) {
|
||||||
|
var fs = require("fs");
|
||||||
|
var path = require("path");
|
||||||
|
|
||||||
|
var pathJoin = (function() {
|
||||||
|
var _join = path.join;
|
||||||
|
return sinon.stub(path,"join",function() {
|
||||||
|
if (arguments.length == 3 && arguments[2] == "package.json") {
|
||||||
|
return _join(resourcesDir,"TestNodeModule" + path.sep + "node_modules" + path.sep,arguments[1],arguments[2]);
|
||||||
|
}
|
||||||
|
if (arguments.length == 2 && arguments[1] == "TestNodeModule") {
|
||||||
|
return _join(resourcesDir,"TestNodeModule" + path.sep + "node_modules" + path.sep,arguments[1]);
|
||||||
|
}
|
||||||
|
return _join.apply(this,arguments);
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
||||||
|
var readdirSync = (function() {
|
||||||
|
var originalReaddirSync = fs.readdirSync;
|
||||||
|
var callCount = 0;
|
||||||
|
return sinon.stub(fs,"readdirSync",function(dir) {
|
||||||
|
var result = [];
|
||||||
|
if (callCount == 1) {
|
||||||
|
result = originalReaddirSync(resourcesDir + "TestNodeModule" + path.sep + "node_modules");
|
||||||
|
}
|
||||||
|
callCount++;
|
||||||
|
return result;
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
typeRegistry.init(settingsWithStorage);
|
||||||
|
typeRegistry.load("wontexist",true).then(function(){
|
||||||
|
|
||||||
|
typeRegistry.addModule("TestNodeModule").then(function() {
|
||||||
|
var list = typeRegistry.getPluginList();
|
||||||
|
list.should.be.an.Array.and.have.lengthOf(1);
|
||||||
|
list[0].should.have.property("name", "TestNodeModule");
|
||||||
|
list[0].should.have.property("nodes");
|
||||||
|
list[0].nodes.should.be.an.Array.and.have.lengthOf(2);
|
||||||
|
|
||||||
|
done();
|
||||||
|
}).catch(function(e) {
|
||||||
|
done(e);
|
||||||
|
});
|
||||||
|
|
||||||
|
}).catch(function(e) {
|
||||||
|
done(e);
|
||||||
|
}).finally(function() {
|
||||||
|
readdirSync.restore();
|
||||||
|
pathJoin.restore();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns plugin info', function(done) {
|
||||||
|
var fs = require("fs");
|
||||||
|
var path = require("path");
|
||||||
|
|
||||||
|
var pathJoin = (function() {
|
||||||
|
var _join = path.join;
|
||||||
|
return sinon.stub(path,"join",function() {
|
||||||
|
if (arguments.length == 3 && arguments[2] == "package.json") {
|
||||||
|
return _join(resourcesDir,"TestNodeModule" + path.sep + "node_modules" + path.sep,arguments[1],arguments[2]);
|
||||||
|
}
|
||||||
|
if (arguments.length == 2 && arguments[1] == "TestNodeModule") {
|
||||||
|
return _join(resourcesDir,"TestNodeModule" + path.sep + "node_modules" + path.sep,arguments[1]);
|
||||||
|
}
|
||||||
|
return _join.apply(this,arguments);
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
||||||
|
var readdirSync = (function() {
|
||||||
|
var originalReaddirSync = fs.readdirSync;
|
||||||
|
var callCount = 0;
|
||||||
|
return sinon.stub(fs,"readdirSync",function(dir) {
|
||||||
|
var result = [];
|
||||||
|
if (callCount == 1) {
|
||||||
|
result = originalReaddirSync(resourcesDir + "TestNodeModule" + path.sep + "node_modules");
|
||||||
|
}
|
||||||
|
callCount++;
|
||||||
|
return result;
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
typeRegistry.init(settingsWithStorage);
|
||||||
|
typeRegistry.load("wontexist",true).then(function(){
|
||||||
|
|
||||||
|
typeRegistry.addModule("TestNodeModule").then(function(nodes) {
|
||||||
|
var list = typeRegistry.getPluginList();
|
||||||
|
|
||||||
|
var plugin = typeRegistry.getPluginInfo(list[0].name);
|
||||||
|
plugin.should.have.property("name", list[0].name);
|
||||||
|
plugin.should.have.property("nodes", nodes);
|
||||||
|
done();
|
||||||
|
}).catch(function(e) {
|
||||||
|
done(e);
|
||||||
|
});
|
||||||
|
|
||||||
|
}).catch(function(e) {
|
||||||
|
done(e);
|
||||||
|
}).finally(function() {
|
||||||
|
readdirSync.restore();
|
||||||
|
pathJoin.restore();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('rejects adding duplicate nodes', function(done) {
|
it('rejects adding duplicate nodes', function(done) {
|
||||||
typeRegistry.init(settingsWithStorage);
|
typeRegistry.init(settingsWithStorage);
|
||||||
@ -745,7 +847,7 @@ describe('NodeRegistry', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
it('allows nodes to be enabled and disabled', function(done) {
|
it('allows nodes to be enabled and disabled by hex-id', function(done) {
|
||||||
typeRegistry.init(settingsWithStorage);
|
typeRegistry.init(settingsWithStorage);
|
||||||
typeRegistry.load(resourcesDir+path.sep+"TestNode1",true).then(function() {
|
typeRegistry.load(resourcesDir+path.sep+"TestNode1",true).then(function() {
|
||||||
var list = typeRegistry.getNodeList();
|
var list = typeRegistry.getNodeList();
|
||||||
@ -784,6 +886,49 @@ describe('NodeRegistry', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('allows nodes to be enabled and disabled by node-type', function(done) {
|
||||||
|
typeRegistry.init(settingsWithStorage);
|
||||||
|
typeRegistry.load(resourcesDir+path.sep+"TestNode1",true).then(function() {
|
||||||
|
var list = typeRegistry.getNodeList();
|
||||||
|
|
||||||
|
list.should.be.an.Array.and.have.lengthOf(1);
|
||||||
|
list[0].should.have.property("id");
|
||||||
|
list[0].should.have.property("name","TestNode1.js");
|
||||||
|
list[0].should.have.property("types",["test-node-1"]);
|
||||||
|
list[0].should.have.property("enabled",true);
|
||||||
|
|
||||||
|
var nodeConfig = typeRegistry.getNodeConfigs();
|
||||||
|
nodeConfig.length.should.be.greaterThan(0);
|
||||||
|
|
||||||
|
var info = typeRegistry.disableNode(list[0].types[0]);
|
||||||
|
info.should.have.property("id",list[0].id);
|
||||||
|
info.should.have.property("types",list[0].types);
|
||||||
|
info.should.have.property("enabled",false);
|
||||||
|
|
||||||
|
var list2 = typeRegistry.getNodeList();
|
||||||
|
list2.should.be.an.Array.and.have.lengthOf(1);
|
||||||
|
list2[0].should.have.property("enabled",false);
|
||||||
|
|
||||||
|
typeRegistry.getNodeConfigs().length.should.equal(0);
|
||||||
|
|
||||||
|
var info2 = typeRegistry.enableNode(list[0].types[0]);
|
||||||
|
info2.should.have.property("id",list[0].id);
|
||||||
|
info2.should.have.property("types",list[0].types);
|
||||||
|
info2.should.have.property("enabled",true);
|
||||||
|
|
||||||
|
var list3 = typeRegistry.getNodeList();
|
||||||
|
list3.should.be.an.Array.and.have.lengthOf(1);
|
||||||
|
list3[0].should.have.property("enabled",true);
|
||||||
|
|
||||||
|
var nodeConfig2 = typeRegistry.getNodeConfigs();
|
||||||
|
nodeConfig2.should.eql(nodeConfig);
|
||||||
|
|
||||||
|
done();
|
||||||
|
}).catch(function(e) {
|
||||||
|
done(e);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('fails to enable/disable non-existent nodes', function(done) {
|
it('fails to enable/disable non-existent nodes', function(done) {
|
||||||
typeRegistry.init(settings);
|
typeRegistry.init(settings);
|
||||||
typeRegistry.load("wontexist",true).then(function() {
|
typeRegistry.load("wontexist",true).then(function() {
|
||||||
|
Loading…
Reference in New Issue
Block a user