Skip to content

Commit

Permalink
Abstracted out some of the unit testing
Browse files Browse the repository at this point in the history
  • Loading branch information
bcaldwell committed Oct 8, 2015
1 parent 81431e4 commit edcda4a
Show file tree
Hide file tree
Showing 4 changed files with 181 additions and 137 deletions.
67 changes: 34 additions & 33 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,37 +1,38 @@
{
"name": "express-socket-json-routes",
"version": "0.1.0",
"description": "Allows for express.js and socket.io routes to be created using a signle JSON object",
"main": "index.js",
"scripts": {
"test": "NODE_ENV=test ./node_modules/mocha/bin/mocha --R spec ./test/unit/*",
"coverage": "NODE_ENV=test ./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -R spec ./test/unit/*",
"opencoverage": "npm run coverage && node ./test/openCoverage.js"
},
"author": "Benjamin Caldwell",
"license": "MIT",
"devDependencies": {
"coveralls": "^2.10.0",
"ejs": "^2.3.4",
"istanbul": "^0.3.5",
"mocha": "^2.2.5",
"open": "0.0.5",
"request": "^2.57.0",
"socket.io": "^1.3.5",
"socket.io-client": "^1.3.7",
"supertest": "^1.1.0",
"unit.js": "^2.0.0"
},
"dependencies": {
"debug": "^2.2.0",
"express": "^4.13.0",
"lodash": "^3.9.3"
},
"repository": {
"type": "git",
"url": "git+https://github.com/benjamincaldwell/express-socket-json-routes.git"
},
"keywords": [
"name": "express-socket-json-routes",
"version": "0.1.0",
"description": "Allows for express.js and socket.io routes to be created using a signle JSON object",
"main": "index.js",
"scripts": {
"test": "NODE_ENV=test ./node_modules/mocha/bin/mocha --R spec ./test/unit/*",
"coverage": "NODE_ENV=test ./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -R spec ./test/unit/*",
"opencoverage": "npm run coverage && node ./test/openCoverage.js"
},
"author": "Benjamin Caldwell",
"license": "MIT",
"devDependencies": {
"coveralls": "^2.10.0",
"ejs": "^2.3.4",
"istanbul": "^0.3.5",
"mocha": "^2.2.5",
"open": "0.0.5",
"q": "^1.4.1",
"request": "^2.57.0",
"socket.io": "^1.3.5",
"socket.io-client": "^1.3.7",
"supertest": "^1.1.0",
"unit.js": "^2.0.0"
},
"dependencies": {
"debug": "^2.2.0",
"express": "^4.13.0",
"lodash": "^3.9.3"
},
"repository": {
"type": "git",
"url": "git+https://github.com/benjamincaldwell/express-socket-json-routes.git"
},
"keywords": [
"express",
"socket.io",
"json"
Expand Down
101 changes: 101 additions & 0 deletions test/unit/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
var test = require("unit.js");
var request = require("supertest");
var Q = require("q");

var should = test.should;

var utilities = require("./utilities.js");
//server setup stuff
var routes = require("../../index.js");

var test1 = require("./testconfigs/test1.js");

var express = require("express");
var socket = require("socket.io");

var app = express();
var server = require("http").Server(app);
var io = socket(server);

app.engine('html', require('ejs').renderFile);

routes(test1, app, io);

//if (!module.parent) {
server.listen(3000);
console.log("Express started on port 3000");
//}
//////////////////////////////////////////////////

var clients = [];
//alias for clients[0]
var client;

var routeCode = function(route, status) {
status = (status ? status : 200);
it(route, function(done) {
request(app)
.get(route)
.expect(status)
.end(function(err, res) {
if (err) return done(err);
done();
});
});
};

var socketReturn = function(route) {
it(route, function(done) {
client.emit(route, {});
client.once(route, function(data) {
data.should.exist;
done();
});
});
};

describe("Set up should work", function() {
it("should require a json config", function() {
routes(null, app, io).should.equal(false);
});
it("should require a json config with a routes array", function() {
routes({}, app, io).should.equal(false);
});
it("should return a router if express not passed in", function() {
routes(test1);
});
it("Should connect to the socket", function(done) {
var deffers = [];
for (var i = 0; i < 5; i++) {
deffers.push(utilities.createSocket());
}
Q.all(deffers).then(function(data) {
clients = data;
client = clients[0];
done();
});
});
});

describe("There should be a route that returns all of the current routes", function() {
routeCode("/routes");
socketReturn("routes");
});

describe("Only configured routes should return 200 code (express)", function() {
routeCode("/test");
routeCode("/hello");
routeCode("/sup");
routeCode("/render");
routeCode("/sendfile");
routeCode("/google", 302);
});

describe("Only configured routes should return 200 code (socket)", function() {
socketReturn("test/get");
socketReturn("hello");
socketReturn("bye");
socketReturn("render");
socketReturn("sendfile");
socketReturn("google");
});
105 changes: 1 addition & 104 deletions test/unit/routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,109 +3,6 @@ var request = require("supertest");

var should = test.should;

//server setup stuff
var routes = require("../../index.js");
module.exports = function(){

var test1 = require("./testconfigs/test1.js");

var express = require("express");
var socket = require("socket.io");

var app = express();
var server = require("http").Server(app);
var io = socket(server);

app.engine('html', require('ejs').renderFile);

routes(test1, app, io);

//if (!module.parent) {
server.listen(3000);
console.log("Express started on port 3000");
//}
//////////////////////////////////////////////////

var socketClient = require('socket.io-client');

var socketURL = "http://localhost:3000";
//var client1 = require('socket.io-client')('http://localhost:3000');
var socketOptions ={
transports: ['websocket'],
'force new connection': true
};


var client = socketClient(socketURL, socketOptions);

var routeCode = function(route, status) {
status = (status? status:200);
it(route, function(done) {
request(app)
.get(route)
.expect(status)
.end(function(err, res) {
if (err) return done(err);
done();
});
});
};

var socketReturn = function(route) {
it(route, function(done) {
client.emit(route, {});
client.once(route, function(data) {
data.should.exist;
done();
});
});
};

describe("Set up should work", function() {
it("should require a json config", function() {
routes(null, app, io).should.equal(false);
});
it("should require a json config with a routes array", function() {
routes({}, app, io).should.equal(false);
});
it("should return a router if express not passed in", function() {
routes(test1);
});
it ("Should connect to the socket", function(done){
if (client.connected){
done()
}
client.once("connect", function(){
done()
})
})
});

describe("There should be a route that returns all of the current routes", function(){
routeCode("/routes");
socketReturn("routes");
});

describe("Only configured routes should return 200 code (express)", function() {
routeCode("/test");
routeCode("/hello");
routeCode("/sup");
routeCode("/render");
routeCode("/sendfile");
routeCode("/google", 302);
});

describe("Only configured routes should return 200 code (socket)", function() {
socketReturn("test/get");
socketReturn("hello");
socketReturn("bye");
socketReturn("render");
socketReturn("sendfile");
socketReturn("google");
});

// test "string" type
// describe("Check Initial Setup", function() {
// it("App and io should start as null", function(){
// ("foobar").should.be.type("string");
// });
// });
45 changes: 45 additions & 0 deletions test/unit/utilities.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
var test = require("unit.js");
var request = require("supertest");
var Q = require("q");

var should = test.should;

var socketClient = require("socket.io-client");

var socketURL = "http://127.0.0.1:3000";
//var client1 = require('socket.io-client')('http://localhost:3000');
var socketOptions = {
forceNew: true
};

module.exports = {
createSocket: function() {
var defer = Q.defer();
var client = socketClient.connect(socketURL, socketOptions);
client.once("connect", function() {
defer.resolve(client);
});
return defer.promise;
},
socketReturn: function(client, route) {
it(route, function(done) {
client.emit(route, {});
client.once(route, function(data) {
data.should.exist;
done();
});
});
},
routeCode: function(app, route, status) {
status = (status ? status : 200);
it(route, function(done) {
request(app)
.get(route)
.expect(status)
.end(function(err, res) {
if (err) return done(err);
done();
});
});
}
};

0 comments on commit edcda4a

Please sign in to comment.