Skip to content

Commit 387d396

Browse files
committed
simple model test, readme update, controller test update
1 parent fba7479 commit 387d396

File tree

5 files changed

+64
-15
lines changed

5 files changed

+64
-15
lines changed

README.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
nodejs-tdd-boilerplate
22
======================
33

4-
NodeJS TDD Boilerplate
4+
#NodeJS TDD Boilerplate
5+
6+
##Features
7+
8+
* mocha test framework.
9+
* sinon stubbing framework.
10+
* istanbul test coverage framework.
11+
* jshint code linting.
12+
* restify REST framework.

lib/models/user.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
function User() {
1+
function User(args) {
2+
this.id = args.id;
23
}
34

45
User.create = function (args, cb) {
5-
cb(null, {id: 123});
6+
cb(null, new User(args));
67
};
78

89
module.exports = User;

lib/server/app_server.js

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@ var Logger = require('bunyan');
55
var ENV = process.env.NODE_ENV;
66

77
var log_path = path.resolve(__dirname, '..', '..', 'log', ENV + '.log');
8+
var logger = new Logger({
9+
name: 'app',
10+
streams: [
11+
{
12+
path: '/tmp/app.log',
13+
level: 'debug'
14+
}
15+
]
16+
});
817

918
function AppServer(config, options) {
1019
var self = this;
@@ -16,20 +25,13 @@ function AppServer(config, options) {
1625

1726
self.server = restify.createServer({
1827
name: config.app_name || 'MyApi',
19-
log: new Logger({
20-
name: 'app',
21-
path: log_path
22-
})
28+
log: logger
2329
});
2430

25-
/*
2631
self.server.on('after', restify.auditLogger({
27-
log: new Logger({
28-
name: 'audit',
29-
path: log_path
30-
})
32+
name: 'audit',
33+
log: logger
3134
}));
32-
*/
3335

3436
process.on('SIGHUP', function () { process.exit(); });
3537
}

test/apps/users/controller.unit.js

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
var restify = require('restify');
12
var assert = require('assert');
23
var sinon = require('sinon');
34
var support = require('../../support');
@@ -19,18 +20,40 @@ describe("users/controller.js", function () {
1920
});
2021

2122
describe("POST /users", function () {
23+
var params;
24+
25+
beforeEach(function () {
26+
params = {username: support.random.string(), password: support.random.string()};
27+
});
28+
2229
it("passes params to User model", function (done) {
2330
sinon.stub(User, 'create', function (args, cb) {
2431
cb(null, {});
2532
});
2633

27-
var params = {username: support.random.string(), password: support.random.string()};
28-
2934
http_client.post('/users', params, function (err, result) {
3035
assert.ifError(err);
3136
assert.ok(User.create.calledWith(params));
37+
User.create.restore();
3238
done();
3339
});
3440
});
41+
42+
context("when model returns an error", function () {
43+
it("responds with the error", function (done) {
44+
var fake_err = new restify.InvalidArgumentError('foo');
45+
sinon.stub(User, 'create', function (args, cb) {
46+
cb(fake_err, {});
47+
});
48+
49+
http_client.post('/users', params, function (err, result) {
50+
assert.ok(User.create.calledWith(params));
51+
assert.equal(result.code, 'InvalidArgument');
52+
assert.equal(result.message, 'foo');
53+
User.create.restore();
54+
done();
55+
});
56+
});
57+
});
3558
});
3659
});

test/models/user.unit.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
var assert = require('assert');
2+
var support = require('../support');
3+
var User = main.models.User;
4+
5+
describe("User model", function () {
6+
describe("create()", function () {
7+
it("returns dummy result for now", function (done) {
8+
User.create({id: 'foo'}, function (err, result) {
9+
assert.ifError(err);
10+
assert.ok(result);
11+
done();
12+
});
13+
});
14+
});
15+
});

0 commit comments

Comments
 (0)