From 03765afefa4886e70f0f690874ce1650b2e6f940 Mon Sep 17 00:00:00 2001 From: Anna Thomas Date: Wed, 17 Dec 2014 13:58:49 +0000 Subject: [PATCH] Updated nodes_spec test to no-op when already enabled/disabled by type name --- test/red/api/nodes_spec.js | 58 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/test/red/api/nodes_spec.js b/test/red/api/nodes_spec.js index 4bb76f887..4ea983c75 100644 --- a/test/red/api/nodes_spec.js +++ b/test/red/api/nodes_spec.js @@ -126,6 +126,7 @@ describe("nodes api", function() { .expect(200) .end(function(err,res) { getNodeInfo.restore(); + getModuleVersion.restore(); if (err) { throw err; } @@ -812,6 +813,63 @@ describe("nodes api", function() { }); }); + describe('no-ops if a node specified by type name already in the right state', function() { + function run(state,done) { + var node = {id:"123",enabled:state,types:['a']}; + var settingsAvailable = sinon.stub(settings,'available', function() { + return true; + }); + var getModuleInfo = sinon.stub(redNodes,'getModuleInfo',function(id) { + return null; + }); + var enableNode = sinon.stub(redNodes,'enableNode',function(id) { + node.enabled = true; + return node; + }); + var disableNode = sinon.stub(redNodes,'disableNode',function(id) { + node.enabled = false; + return node; + }); + var getNodeList = sinon.stub(redNodes,'getNodeList', function() { + return [{name: 'foo', enabled: state}, {name: 'bar'}]; + }); + var getModuleVersion = sinon.stub(redNodes,'getModuleVersion', function() { + return '0.0.1'; + }); + + request(app) + .put('/nodes/foo') + .send({enabled:state}) + .expect(200) + .end(function(err,res) { + settingsAvailable.restore(); + getModuleInfo.restore(); + var enableNodeCalled = enableNode.called; + var disableNodeCalled = disableNode.called; + enableNode.restore(); + disableNode.restore(); + getNodeList.restore(); + getModuleVersion.restore(); + if (err) { + throw err; + } + enableNodeCalled.should.be.false; + disableNodeCalled.should.be.false; + res.body.should.have.property("name","foo"); + res.body.should.have.property("version"); + res.body.should.have.property("enabled",state); + + done(); + }); + } + it('already enabled', function(done) { + run(true,done); + }); + it('already disabled', function(done) { + run(false,done); + }); + }); + describe('does not no-op if err on a node in module', function() { function run(state,done) { var node = {id:"123",enabled:state,types:['a'],err:"foo"};