Skip to content

Commit

Permalink
NC-11: write test for /users/create
Browse files Browse the repository at this point in the history
  • Loading branch information
divramod committed Jul 19, 2016
1 parent 7544f4b commit e7c779b
Show file tree
Hide file tree
Showing 10 changed files with 88 additions and 93 deletions.
2 changes: 1 addition & 1 deletion change.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 2 additions & 3 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,8 @@ gulp.task('compile', ['clean'], () => {
// =========== [ TEST ] ===========
gulp.task('test-watch', [], () => {
process.on('SIGINT', function() {
console.log("Caught interrupt signal");
if (i_should_exit)
process.exit();
console.log("Caught interrupt signal");
process.exit();
});
runSequence('compile', 'test')
gulp.watch([sourceFiles, testFiles, 'gulpfile.js'], function(e) {
Expand Down
2 changes: 0 additions & 2 deletions src/controllers/userController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,6 @@ export default class userController extends BaseController {
return {
handler: (request: Hapi.Request, reply: Hapi.IReply) => {
var newUser: IUser = request.payload;
console.log(newUser);

this.userRepository.create(newUser).then((user) => {
reply(user).code(201);
}).catch((error) => {
Expand Down
3 changes: 3 additions & 0 deletions src/libs/repository/interfaces.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
/// <reference path="../../../typings.d.ts" />

// ========================== [ meta ] ==========================
export interface IEntity {
_id: string;
Expand Down Expand Up @@ -32,6 +34,7 @@ export interface IUser extends IEntity {
name: string;
forename: string;
email: string;
telefon: string;
}

export interface IUserRepository extends IRepository<IUser> {
Expand Down
7 changes: 5 additions & 2 deletions src/models/userModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,16 @@ export const createUserModel = Joi.object().keys({
username: Joi.string().required(),
name: Joi.string().required(),
forename: Joi.string().required(),
email: Joi.string().email()
email: Joi.string().email().required(),
telefon: Joi.number().required(),
});

export const updateUserModel = Joi.object().keys({
username: Joi.string().required(),
name: Joi.string().required(),
forename: Joi.string().required(),
email: Joi.string().email()
email: Joi.string().email().required(),
telefon: Joi.number().required(),
});

export const userModel = Joi.object({
Expand All @@ -20,6 +22,7 @@ export const userModel = Joi.object({
name: Joi.string().required(),
forename: Joi.string().required(),
email: Joi.string().email(),
telefon: Joi.number().required(),
createdDate: Joi.date(),
updatedAt: Joi.date()
}).label("User Model").description("Json body that represents a user");
24 changes: 19 additions & 5 deletions src/routes/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,36 +39,50 @@ export default function(server: Hapi.Server) {
config: taskController.updateTask()
});

server.route({
method: 'POST',
path: '/api/tasks',
handler: undefined,
config: taskController.createTask()
});

// ========================== [ user ] ==========================

const userController = new UserController(server, new UserRepository());

server.route({
method: 'GET',
path: '/api/users/{id}',
handler: undefined,
config: userController.getUserById()
});

server.route({
method: 'GET',
path: '/api/users',
handler: undefined,
config: userController.getUsers()
});

server.route({
method: 'DELETE',
path: '/api/users/{id}',
handler: undefined,
config: userController.deleteUser()
});

server.route({
method: 'PUT',
path: '/api/users/{id}',
handler: undefined,
config: userController.updateUser()
});

server.route({
method: 'POST',
path: '/api/users',
handler: undefined,
config: userController.createUser()
});

}
39 changes: 0 additions & 39 deletions test/controllers/UserControllerTests.ts

This file was deleted.

14 changes: 11 additions & 3 deletions test/repositories/UserRepositoryTests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,18 @@ describe("UserRepository", function() {

it("Authenticate a User", function(done) {
const userController = new UserController(server, new UserRepository());
userController.authenticate().then((user) => {
console.log(user);
const user = {
'username': 'divramod',
'name': 'Petermann',
'forename': 'Arvid',
'email': '[email protected]',
'telefon': '017620158302'
}
userController.authenticate(user).then((user) => {
//console.log(user);
done();
}).catch((error) => {
console.log(error);
//console.log(error);
done(error);
});
});
Expand All @@ -31,6 +38,7 @@ describe("UserRepository", function() {
name: "teste",
forename: "teste",
email: "user",
telefon: "017625322",
createdDate: undefined,
updatedAt: undefined
};
Expand Down
38 changes: 0 additions & 38 deletions test/routes/UserRouteTests.ts

This file was deleted.

47 changes: 47 additions & 0 deletions test/routes/UserRoutesTests.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/// <reference path="../../typings/index.d.ts" />
import * as chai from "chai";
let assert = chai.assert;

import server from "../../src/server";
import UserController from '../../src/controllers/userController';
import UserRepository from '../../src/libs/repository/mongo/userRepository';
import {IUser} from "../../src/libs/repository/interfaces";

describe("route user/create POST", function() {

const userController = new UserController(server, new UserRepository());

it("should create a user", function(done) {
let user: IUser = {
'username': 'divramod',
'name': 'Petermann',
'forename': 'Arvid',
'email': '[email protected]',
'telefon': '017620158302'
}
const request = {
method: 'POST',
url: '/api/users',
payload: user
};

server.inject(request).then((response) => {
let res = JSON.parse(response.payload);

assert.strictEqual(user.email, res.email, 'email')
assert.strictEqual(user.username, res.username, 'username')
assert.strictEqual(user.name, res.name, 'name')
assert.strictEqual(user.forename, res.forename, 'forename')
assert.isNumber(res.telefon, 'telefon should be a number')

assert.isString(res._id, '_id should be a string')
assert.isDefined(res._id, '_id should be defined')
assert.strictEqual(res._id.length, 36, 'lenght of id should be 36')
assert.isDefined(res.createdDate, 'createdDate should be defined')
done();
}).catch((error) => {
console.log(error);
});

});
});

0 comments on commit e7c779b

Please sign in to comment.