diff --git a/test/red/red_spec.js b/test/red/red_spec.js index cd002ebea..dcbf8a246 100644 --- a/test/red/red_spec.js +++ b/test/red/red_spec.js @@ -1,5 +1,5 @@ /** - * Copyright 2014 IBM Corp. + * Copyright 2014, 2015 IBM Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,33 +14,58 @@ * limitations under the License. **/ var should = require("should"); +var sinon = require("sinon"); +var fs = require("fs"); +var path = require("path"); + +var RED = require("../../red/red"); +var log = require("../../red/log"); +var settings = require("../../red/settings"); +var server = require("../../red/server"); + describe("red/red", function() { - it('can be required without errors', function() { - require("../../red/red"); + + describe("check build", function() { + beforeEach(function() { + sinon.stub(log,"init",function() {}); + sinon.stub(settings,"init",function() {}); + sinon.stub(server,"init",function() {}); + sinon.stub(RED,"version",function() { return "version";}); + }); + afterEach(function() { + log.init.restore(); + settings.init.restore(); + server.init.restore(); + fs.statSync.restore(); + RED.version.restore(); + }); + it('warns if build has not been run',function() { + sinon.stub(fs,"statSync",function() { throw new Error();}); + + /*jshint immed: false */ + (function() { + RED.init({},{}); + }).should.throw("Node-RED not built"); + }); + it('passed if build has been run',function() { + sinon.stub(fs,"statSync",function() { }); + RED.init({},{}); + }); }); - - var RED = require("../../red/red"); - - it('returns an app object', function() { - var srv = RED.app.use("/test", function() { return "app"; }); - srv.should.be.an.instanceOf(Object); - }); - - it('returns an httpAdmin object', function() { - var srv = RED.httpAdmin.use("/test", function() { return "Admin"; }); - srv.should.be.an.instanceOf(Object); - }); - - it('returns an httpNode object', function() { - var srv = RED.httpNode.use("/test", function() { return "Node"; }); - srv.should.be.an.instanceOf(Object); - }); - - it('it returns a server object', function() { - var srv = RED.server; - srv.should.be.an.instanceOf(Object).and.have.property('domain', null); - //srv.should.be.an.instanceOf(Object).and.have.property('timeout', 120000); + + describe("externals", function() { + it('reports version', function() { + var p = require(path.join(process.env.NODE_RED_HOME,"package.json")).version; + RED.version().indexOf(p).should.eql(0); + }); + it('access server externals', function() { + // TODO: unstubable accessors - need to make this testable + RED.app; + RED.httpAdmin; + RED.httpNode; + RED.server; + }); }); });