summaryrefslogtreecommitdiffstats
path: root/dgbuilder/test/red/nodes/Node_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'dgbuilder/test/red/nodes/Node_spec.js')
-rw-r--r--dgbuilder/test/red/nodes/Node_spec.js297
1 files changed, 0 insertions, 297 deletions
diff --git a/dgbuilder/test/red/nodes/Node_spec.js b/dgbuilder/test/red/nodes/Node_spec.js
deleted file mode 100644
index 6ac54bd2..00000000
--- a/dgbuilder/test/red/nodes/Node_spec.js
+++ /dev/null
@@ -1,297 +0,0 @@
-/**
- * Copyright 2014 IBM Corp.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- **/
-
-var should = require("should");
-var sinon = require('sinon');
-var RedNode = require("../../../red/nodes/Node");
-var comms = require('../../../red/comms');
-
-describe('Node', function() {
- describe('#constructor',function() {
- it('is called with an id and a type',function() {
- var n = new RedNode({id:'123',type:'abc'});
- n.should.have.property('id','123');
- n.should.have.property('type','abc');
- n.should.not.have.property('name');
- n.wires.should.be.empty;
- });
-
- it('is called with an id, a type and a name',function() {
- var n = new RedNode({id:'123',type:'abc',name:'barney'});
- n.should.have.property('id','123');
- n.should.have.property('type','abc');
- n.should.have.property('name','barney');
- n.wires.should.be.empty;
- });
-
- it('is called with an id, a type and some wires',function() {
- var n = new RedNode({id:'123',type:'abc',wires:['123','456']});
- n.should.have.property('id','123');
- n.should.have.property('type','abc');
- n.should.not.have.property('name');
- n.wires.should.have.length(2);
- });
-
- });
-
- describe('#close', function() {
- it('emits close event when closed',function(done) {
- var n = new RedNode({id:'123',type:'abc'});
- n.on('close',function() {
- done();
- });
- var p = n.close();
- should.not.exist(p);
- });
-
- it('returns a promise when provided a callback with a done parameter',function(testdone) {
- var n = new RedNode({id:'123',type:'abc'});
- n.on('close',function(done) {
- setTimeout(function() {
- done();
- },200);
- });
- var p = n.close();
- should.exist(p);
- p.then(function() {
- testdone();
- });
- });
- });
-
-
- describe('#receive', function() {
- it('emits input event when called', function(done) {
- var n = new RedNode({id:'123',type:'abc'});
- var message = {payload:"hello world"};
- n.on('input',function(msg) {
- should.deepEqual(msg,message);
- done();
- });
- n.receive(message);
- });
- });
-
- describe('#send', function() {
-
- it('emits a single message', function(done) {
- var n1 = new RedNode({id:'n1',type:'abc',wires:[['n2']]});
- var n2 = new RedNode({id:'n2',type:'abc'});
- var message = {payload:"hello world"};
-
- n2.on('input',function(msg) {
- // msg equals message, but is a new copy
- should.deepEqual(msg,message);
- should.notStrictEqual(msg,message);
- done();
- });
-
- n1.send(message);
- });
-
- it('emits multiple messages on a single output', function(done) {
- var n1 = new RedNode({id:'n1',type:'abc',wires:[['n2']]});
- var n2 = new RedNode({id:'n2',type:'abc'});
-
- var messages = [
- {payload:"hello world"},
- {payload:"hello world again"}
- ];
-
- var rcvdCount = 0;
-
- n2.on('input',function(msg) {
- should.deepEqual(msg,messages[rcvdCount]);
- should.notStrictEqual(msg,messages[rcvdCount]);
- rcvdCount += 1;
- if (rcvdCount == 2) {
- done();
- }
- });
- n1.send([messages]);
- });
-
- it('emits messages to multiple outputs', function(done) {
- var n1 = new RedNode({id:'n1',type:'abc',wires:[['n2'],['n3'],['n4','n5']]});
- var n2 = new RedNode({id:'n2',type:'abc'});
- var n3 = new RedNode({id:'n3',type:'abc'});
- var n4 = new RedNode({id:'n4',type:'abc'});
- var n5 = new RedNode({id:'n5',type:'abc'});
-
- var messages = [
- {payload:"hello world"},
- null,
- {payload:"hello world again"}
- ];
-
- var rcvdCount = 0;
-
- n2.on('input',function(msg) {
- should.deepEqual(msg,messages[0]);
- should.notStrictEqual(msg,messages[0]);
- rcvdCount += 1;
- if (rcvdCount == 3) {
- done();
- }
- });
-
- n3.on('input',function(msg) {
- should.fail(null,null,"unexpected message");
- });
-
- n4.on('input',function(msg) {
- should.deepEqual(msg,messages[2]);
- should.notStrictEqual(msg,messages[2]);
- rcvdCount += 1;
- if (rcvdCount == 3) {
- done();
- }
- });
-
- n5.on('input',function(msg) {
- should.deepEqual(msg,messages[2]);
- should.notStrictEqual(msg,messages[2]);
- rcvdCount += 1;
- if (rcvdCount == 3) {
- done();
- }
- });
-
- n1.send(messages);
- });
-
- it('emits no messages', function(done) {
- var n1 = new RedNode({id:'n1',type:'abc',wires:[['n2']]});
- var n2 = new RedNode({id:'n2',type:'abc'});
-
- n2.on('input',function(msg) {
- should.fail(null,null,"unexpected message");
- });
-
- setTimeout(function() {
- done();
- }, 200);
-
- n1.send();
- });
-
- it('emits messages ignoring non-existent nodes', function(done) {
- var n1 = new RedNode({id:'n1',type:'abc',wires:[['n9'],['n2']]});
- var n2 = new RedNode({id:'n2',type:'abc'});
-
- var messages = [
- {payload:"hello world"},
- {payload:"hello world again"}
- ];
-
- n2.on('input',function(msg) {
- should.deepEqual(msg,messages[1]);
- should.notStrictEqual(msg,messages[1]);
- done();
- });
-
- n1.send(messages);
- });
-
- it('emits messages without cloning req or res', function(done) {
- var n1 = new RedNode({id:'n1',type:'abc',wires:[['n2']]});
- var n2 = new RedNode({id:'n2',type:'abc'});
-
- var req = {};
- var res = {};
- var cloned = {};
- var message = {payload: "foo", cloned: cloned, req: req, res: res};
-
- n2.on('input',function(msg) {
- should.deepEqual(msg, message);
- msg.cloned.should.not.be.exactly(message.cloned);
- msg.req.should.be.exactly(message.req);
- msg.res.should.be.exactly(message.res);
- done();
- });
-
- n1.send(message);
- });
-
- });
-
- describe('#log', function() {
- it('emits a log message', function(done) {
- var n = new RedNode({id:'123',type:'abc'});
- n.on('log',function(obj) {
- should.deepEqual({level:"log", id:n.id,
- type:n.type, msg:"a log message"}, obj);
- done();
- });
- n.log("a log message");
- });
- });
-
- describe('#log', function() {
- it('emits a log message with a name', function(done) {
- var n = new RedNode({id:'123', type:'abc', name:"barney"});
- n.on('log',function(obj) {
- should.deepEqual({level:"log", id:n.id, name: "barney",
- type:n.type, msg:"a log message"}, obj);
- done();
- });
- n.log("a log message");
- });
- });
-
- describe('#warn', function() {
- it('emits a warning', function(done) {
- var n = new RedNode({id:'123',type:'abc'});
- n.on('log',function(obj) {
- should.deepEqual({level:"warn", id:n.id,
- type:n.type, msg:"a warning"}, obj);
- done();
- });
- n.warn("a warning");
- });
- });
-
- describe('#error', function() {
- it('emits an error message', function(done) {
- var n = new RedNode({id:'123',type:'abc'});
- n.on('log',function(obj) {
- should.deepEqual({level:"error", id:n.id,
- type:n.type, msg:"an error message"}, obj);
- done();
- });
- n.error("an error message");
- });
- });
-
- describe('#status', function() {
- after(function() {
- comms.publish.restore();
- });
- it('publishes status', function(done) {
- var n = new RedNode({id:'123',type:'abc'});
- var status = {fill:"green",shape:"dot",text:"connected"};
- sinon.stub(comms, 'publish', function(topic, message, retain) {
- topic.should.equal('status/123');
- message.should.equal(status);
- retain.should.be.true;
- done();
- });
-
- n.status(status);
- });
- });
-
-});