Skip to content

Commit

Permalink
(new) testing setup
Browse files Browse the repository at this point in the history
  • Loading branch information
omsmith committed Feb 28, 2014
1 parent 7eadae8 commit ab7c6c7
Show file tree
Hide file tree
Showing 9 changed files with 192 additions and 2 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
node_modules
coverage
*.swp
*.swo
6 changes: 6 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
language: node_js
node_js:
- "0.11"
- "0.10"
script: 'npm test --coverage'
after_success: 'npm run report-cov'
11 changes: 9 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"description": "A simple path-only router",
"main": "lib/index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
"test": "./node_modules/.bin/istanbul test ./node_modules/.bin/_mocha -- -R spec spec",
"report-cov": "cat ./coverage/lcov.info | ./node_modules/.bin/coveralls"
},
"repository": {
"type": "git",
Expand All @@ -20,5 +21,11 @@
"bugs": {
"url": "https://github.com/omsmith/simple-path-router/issues"
},
"homepage": "https://github.com/omsmith/simple-path-router"
"homepage": "https://github.com/omsmith/simple-path-router",
"devDependencies": {
"mocha": "^1.17.1",
"coveralls": "^2.8.0",
"istanbul": "^0.2.4",
"supertest": "^0.9.0"
}
}
35 changes: 35 additions & 0 deletions spec/children_spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/* global describe, it */

'use strict';

var router = new (require('../'))().listen(),
request = require('supertest')(router._server);

describe('router', function () {
var routes = ['/a', '/a/b', '/a/b/c'];

routes.forEach(function (route) {
router.when(route, function (req, res) {
res.statusCode = 200;
res.end(route);
});
});

routes.forEach(function (route) {
it ('should route to ' + route, function (done) {
request
.get(route)
.expect(200)
.expect(route)
.end(done);
});

it ('should route to child /a of' + route, function (done) {
request
.get(route + '/a')
.expect(200)
.expect(route)
.end(done);
});
});
});
25 changes: 25 additions & 0 deletions spec/dispatch_spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/* global describe, it, before */

'use strict';

var router = new (require('../'))(),
request = require('supertest')(require('http').createServer(router.dispatch));

describe('router.dispatch', function () {
before(function (done) {
router.when('/', function (req, res) {
res.statusCode = 200;
res.end('so dispatch');
});

done();
});

it('should function as a request handler for a server', function (done) {
request
.get('/')
.expect(200)
.expect('so dispatch')
.end(done);
});
});
15 changes: 15 additions & 0 deletions spec/empty_spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/* global describe, it */

'use strict';

var router = new (require('../'))().listen(),
request = require('supertest')(router._server);

describe('router', function () {
it('should 404 with no routes defined', function (done) {
request
.get('/')
.expect(404)
.end(done);
});
});
26 changes: 26 additions & 0 deletions spec/leading-slash_spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/* global describe, it, before */

'use strict';

var router = new (require('../'))().listen(),
request = require('supertest')(router._server);

describe('router', function () {
before(function (done) {
router
.when('abc', function (req, res) {
res.statusCode = 200;
res.end('/abc');
});

done();
});

it('should add a leading slash to routes', function (done) {
request
.get('/abc')
.expect(200)
.expect('/abc')
.end(done);
});
});
39 changes: 39 additions & 0 deletions spec/replace-route_spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/* global describe, it */

'use strict';

var router = new (require('../'))().listen(),
request = require('supertest')(router._server);

describe('router', function () {
it('should replace existing routes', function (done) {
router
.when('/abc', function (req, res) {
res.statusCode = 200;
res.end('/abc');
});

request
.get('/abc')
.expect(200)
.expect('/abc')
.end(function (err) {
/* istanbul ignore if */
if (err) {
done(err);
}

router
.when('/abc', function (req, res) {
res.statusCode = 200;
res.end('super new fun times');
});

request
.get('/abc')
.expect(200)
.expect('super new fun times')
.end(done);
});
});
});
36 changes: 36 additions & 0 deletions spec/superstring_spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/* global describe, it */

'use strict';

var router = new (require('../'))().listen(),
request = require('supertest')(router._server);

describe('router', function () {
router.when('/a', function (req, res) {
res.statusCode = 200;
res.end('/a');
});

it('should route to /a', function (done) {
request
.get('/a')
.expect(200)
.expect('/a')
.end(done);
});

it('should route to /a/', function (done) {
request
.get('/a/')
.expect(200)
.expect('/a')
.end(done);
});

it('should not route to superstring /ab', function (done) {
request
.get('/ab')
.expect(404)
.end(done);
});
});

0 comments on commit ab7c6c7

Please sign in to comment.