From 0a7bd848c6d6ccbac39a355eac490ef651ddb12b Mon Sep 17 00:00:00 2001 From: Mark Hindess Date: Wed, 9 Jul 2014 07:42:09 +0100 Subject: [PATCH 1/4] Add more Node tests. --- test/node_spec.js | 51 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/test/node_spec.js b/test/node_spec.js index 642458367..bcb1c9132 100644 --- a/test/node_spec.js +++ b/test/node_spec.js @@ -170,6 +170,55 @@ describe('Node', function() { n1.send(messages); }); + }); - + + 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"); + }); + }); + }); From d371511d1da207d5d89f17d2e713b7fd34a29bb3 Mon Sep 17 00:00:00 2001 From: Mark Hindess Date: Wed, 9 Jul 2014 07:42:34 +0100 Subject: [PATCH 2/4] Refactor common log code. --- red/nodes/Node.js | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/red/nodes/Node.js b/red/nodes/Node.js index 86f2b006d..64fbd079c 100644 --- a/red/nodes/Node.js +++ b/red/nodes/Node.js @@ -119,27 +119,26 @@ Node.prototype.receive = function(msg) { this.emit("input",msg); } +function log_helper(self, level, msg) { + var o = {level:level, id:self.id, type:self.type, msg:msg}; + if (self.name) { + o.name = self.name; + } + self.emit("log",o); +} + Node.prototype.log = function(msg) { - var o = {level:'log',id:this.id, type:this.type, msg:msg}; - if (this.name) { - o.name = this.name; - } - this.emit("log",o); + log_helper(this, 'log', msg); } + Node.prototype.warn = function(msg) { - var o = {level:'warn',id:this.id, type:this.type, msg:msg}; - if (this.name) { - o.name = this.name; - } - this.emit("log",o); + log_helper(this, 'warn', msg); } + Node.prototype.error = function(msg) { - var o = {level:'error',id:this.id, type:this.type, msg:msg}; - if (this.name) { - o.name = this.name; - } - this.emit("log",o); + log_helper(this, 'error', msg); } + /** * status: { fill:"red|green", shape:"dot|ring", text:"blah" } */ From 74335990e355ff92d9e0e6511ca6eee725d13981 Mon Sep 17 00:00:00 2001 From: Mark Hindess Date: Wed, 9 Jul 2014 08:00:35 +0100 Subject: [PATCH 3/4] Add test for the null message case. --- test/node_spec.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/node_spec.js b/test/node_spec.js index bcb1c9132..123fbf827 100644 --- a/test/node_spec.js +++ b/test/node_spec.js @@ -171,6 +171,21 @@ describe('Node', function() { 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(); + }); + }); describe('#log', function() { From 66459f1bd6523a51cc26cbbe53e32f11030e63ea Mon Sep 17 00:00:00 2001 From: Mark Hindess Date: Wed, 9 Jul 2014 08:01:52 +0100 Subject: [PATCH 4/4] Short circuit the null message case. --- red/nodes/Node.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/red/nodes/Node.js b/red/nodes/Node.js index 64fbd079c..c2fdc7c4f 100644 --- a/red/nodes/Node.js +++ b/red/nodes/Node.js @@ -62,7 +62,7 @@ Node.prototype.close = function() { Node.prototype.send = function(msg) { // instanceof doesn't work for some reason here if (msg == null) { - msg = []; + return; } else if (!util.isArray(msg)) { msg = [msg]; }