Skip to content

Commit

Permalink
Handle certain status codes as errors
Browse files Browse the repository at this point in the history
  • Loading branch information
mbenford authored and wpjunior committed Jan 8, 2018
1 parent 2631fd4 commit 5ba7ddb
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 21 deletions.
4 changes: 3 additions & 1 deletion lib/Response.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
function emitError(response, statusCode, error) {
response.status(statusCode).send({ error });
const err = new Error(error);
err.statusCode = statusCode;
response.callback(err);
}

class Response {
Expand Down
40 changes: 20 additions & 20 deletions test/Response.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,77 +65,77 @@ describe('Response', () => {

describe('create a response with bad request status code (400)', () => {
let res;
let codeResponse;
let error;

before((done) => {
const callback = (err, responseData) => {
codeResponse = responseData;
const callback = (err) => {
error = err;
done();
};
res = new Response({ callback });
res.badRequest('Its an error');
});

it('should sends the response with status of 304', () => {
expect(codeResponse.body).to.be.eql({ error: 'Its an error' });
expect(codeResponse.status).to.be.eql(400);
expect(error.message).to.be.eql('Its an error');
expect(error.statusCode).to.be.eql(400);
});
});

describe('create a response with not found status code (404)', () => {
let res;
let codeResponse;
let error;

before((done) => {
const callback = (err, responseData) => {
codeResponse = responseData;
const callback = (err) => {
error = err;
done();
};
res = new Response({ callback });
res.notFound('My resource not is found');
});

it('should sends the response with status of 404', () => {
expect(codeResponse.body).to.be.eql({ error: 'My resource not is found' });
expect(codeResponse.status).to.be.eql(404);
expect(error.message).to.be.eql('My resource not is found');
expect(error.statusCode).to.be.eql(404);
});
});

describe('create a response with validation error status code (422)', () => {
let res;
let codeResponse;
let error;

before((done) => {
const callback = (err, responseData) => {
codeResponse = responseData;
const callback = (err) => {
error = err;
done();
};
res = new Response({ callback });
res.unprocessableEntity('Field a is wrong');
});

it('should sends the response with status of 422', () => {
expect(codeResponse.body).to.be.eql({ error: 'Field a is wrong' });
expect(codeResponse.status).to.be.eql(422);
expect(error.message).to.be.eql('Field a is wrong');
expect(error.statusCode).to.be.eql(422);
});
});

describe('create a response with internal server error status code (500)', () => {
let res;
let codeResponse;
let error;

before((done) => {
const callback = (err, responseData) => {
codeResponse = responseData;
const callback = (err) => {
error = err;
done();
};
res = new Response({ callback });
res.internalServerError('Server crashed');
});

it('should sends the response with status of 500', () => {
expect(codeResponse.body).to.be.eql({ error: 'Server crashed' });
expect(codeResponse.status).to.be.eql(500);
expect(error.message).to.be.eql('Server crashed');
expect(error.statusCode).to.be.eql(500);
});
});

Expand Down

0 comments on commit 5ba7ddb

Please sign in to comment.