Skip to content

Instantly share code, notes, and snippets.

@ianaya89
Created October 22, 2015 04:33
Show Gist options
  • Save ianaya89/89dc0cfbd5fcba0e42a2 to your computer and use it in GitHub Desktop.
Save ianaya89/89dc0cfbd5fcba0e42a2 to your computer and use it in GitHub Desktop.
mocha test example for NodeJS
'use strict';
process.env.NODE_ENV = 'test';
var chai = require('chai');
var chaiHttp = require('chai-http');
var server = require('../server.js');
var should = chai.should();
var UserModel = require('../schemas/user-schema.js');
var users = require('./mock-data.js').users;
before(function() {
UserModel.collection.drop();
});
describe('/users', function() {
var user = {};
beforeEach(function() {
user = users[0];
});
describe('POST /users', function() {
it('should create a new user', function(done) {
chai.request(server)
.post('/users')
.send(user)
.end(function(err, res) {
users[0]._id = res.body[0]._id;
res.should.have.status(201);
res.should.be.json;
done();
});
});
it('should get a 500 creating a user with duplicate username', function(done) {
try {
chai.request(server)
.post('/users')
.send(user)
.end(function(err, res) {
res.should.have.status(500);
done();
});
}
catch (ex) {}
});
it('should get a 500 creating a user with duplicate email', function(done) {
user.username = 'jdoe1';
try {
chai.request(server)
.post('/users')
.send(user)
.end(function(err, res) {
res.should.have.status(500);
done();
});
}
catch (ex) {}
});
it('should get a 500 creating a user with invalid email', function(done) {
user.username = 'jdoe1';
user.username = 'jdoe1@wrong';
try {
chai.request(server)
.post('/users')
.send(user)
.end(function(err, res) {
res.should.have.status(500);
done();
});
}
catch (ex) {}
});
it('should get a 500 creating a user with invalid password', function(done) {
user.username = 'jdoe1';
user.email = '[email protected]';
user.password = 'jdoe1';
try {
chai.request(server)
.post('/users')
.send(user)
.end(function(err, res) {
res.should.have.status(500);
done();
});
}
catch (ex) {}
});
it('should get a 500 creating a user with invalid name', function(done) {
user.username = 'jdoe1';
user.email = '[email protected]';
user.name.first = '';
try {
chai.request(server)
.post('/users')
.send(user)
.end(function(err, res) {
res.should.have.status(500);
done();
});
}
catch (ex) {}
});
});
describe('GET /users/:id', function() {
beforeEach(function() {
user = users[0];
});
it('should get one user', function(done) {
chai.request(server)
.get('/users/' + user._id)
.end(function(err, res) {
res.should.have.status(200);
res.should.be.json;
done();
});
});
it('should get 404 retrieving a user which does not exist', function(done) {
try {
chai.request(server)
.get('/users/111111111111111111111111')
.end(function(err, res) {
res.should.have.status(404);
done();
});
}
catch (ex) {}
});
it('should get 500 retrieving a user with invali id', function(done) {
try {
chai.request(server)
.get('/users/1')
.end(function(err, res) {
res.should.have.status(500);
done();
});
}
catch (ex) {}
});
});
describe('GET /users', function() {
it('should get a list of users', function(done) {
chai.request(server)
.get('/users')
.end(function(err, res) {
res.should.have.status(200);
res.should.be.json;
done();
});
});
});
describe('PUT /users', function() {
beforeEach(function() {
user = users[0];
});
it('should update a user', function(done) {
user.name.first = 'Joe';
chai.request(server)
.put('/users/' + user._id)
.end(function(err, res) {
res.should.have.status(200);
res.should.be.json;
done();
});
});
});
describe('DELETE /users/:id', function() {
beforeEach(function() {
user = users[0];
});
it('should remove a user', function(done) {
chai.request(server)
.delete('/users/' + user._id)
.end(function(err, res) {
res.should.have.status(204);
done();
});
});
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment