Skip to content

Commit 415ddad

Browse files
committed
Initial commit
0 parents  commit 415ddad

File tree

8 files changed

+262
-0
lines changed

8 files changed

+262
-0
lines changed

.travis.yml

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
language: node_js
2+
node_js:
3+
- '4'
4+
- '6'
5+
before_install:
6+
- 'npm install npm@latest codeclimate-test-reporter -g'
7+
addons:
8+
code_climate:
9+
repo_token: token
10+
after_script:
11+
- 'npm run gen-coverage && cat coverage/lcov.info | codeclimate-test-reporter'

index.js

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
'use strict'
2+
3+
const Hoek = require('hoek');
4+
5+
class JSONErrors {
6+
constructor() {
7+
this.errors = new Array();
8+
}
9+
10+
get() {
11+
return { errors: this.errors };
12+
}
13+
14+
create(id, message, meta) {
15+
var error = {};
16+
17+
Hoek.assert(id !== undefined, 'id required');
18+
Hoek.assert(message !== undefined, 'message required');
19+
20+
error.id = id;
21+
error.message = message;
22+
23+
if (meta) error.meta = meta;
24+
25+
return error;
26+
}
27+
28+
createSingle(id, message, meta) {
29+
var errors = new JSONErrors();
30+
31+
errors.add(id, message, meta);
32+
return errors.get();
33+
}
34+
35+
add(id, message, meta) {
36+
var error = this.create(id, message, meta);
37+
this.errors.push(error);
38+
}
39+
40+
clear() {
41+
this.errors = new Array();
42+
}
43+
};
44+
45+
module.exports = JSONErrors;

package.json

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{
2+
"name": "json-api-errors",
3+
"version": "0.1.0",
4+
"description": "JSON api errors formatter",
5+
"main": "errors.js",
6+
"scripts": {
7+
"test": "lab -c"
8+
},
9+
"keywords": [
10+
"json",
11+
"api",
12+
"errors",
13+
"formatter",
14+
"restify",
15+
"express",
16+
"hapi",
17+
"koa",
18+
"http",
19+
"https",
20+
"nodejs",
21+
"node",
22+
"npm"
23+
],
24+
"author": "Jeremiah Harlan <[email protected]>",
25+
"license": "MIT",
26+
"devDependencies": {
27+
"code": "3.0.2",
28+
"lab": "11.0.1"
29+
},
30+
"dependencies": {
31+
"hoek": "^4.0.2"
32+
}
33+
}

test/clear.js

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
const Code = require('code');
2+
const Lab = require('lab');
3+
4+
const JSONErrors = require('..');
5+
6+
const lab = exports.lab = Lab.script();
7+
8+
const describe = lab.describe;
9+
const it = lab.it;
10+
const expect = Code.expect;
11+
const beforeEach = lab.beforeEach;
12+
13+
var Client, err, errObject;
14+
15+
describe('JSONErrors.clear', () => {
16+
err = { id: 'CUSTOM_ERROR', message: 'This is a custom error message' };
17+
18+
beforeEach((done) => {
19+
Client = new JSONErrors();
20+
Client.add(err.id, err.message);
21+
done();
22+
});
23+
24+
it('clears out errors', (done) => {
25+
var errors;
26+
27+
Client.clear();
28+
errors = Client.get();
29+
expect(errors.errors).to.have.length(0);
30+
done();
31+
});
32+
});

test/create.js

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
const Code = require('code');
2+
const Lab = require('lab');
3+
4+
const JSONErrors = require('..');
5+
6+
const lab = exports.lab = Lab.script();
7+
8+
const describe = lab.describe;
9+
const it = lab.it;
10+
const expect = Code.expect;
11+
const beforeEach = lab.beforeEach;
12+
13+
var Client, err, errObject;
14+
15+
describe('JSONErrors.create', () => {
16+
err = { id: 'CUSTOM_ERROR', message: 'This is a custom error' };
17+
errObject = { errors: [{ id: err.id, message: err.message }] };
18+
19+
beforeEach((done) => {
20+
Client = new JSONErrors();
21+
done();
22+
});
23+
24+
describe('validation', () => {
25+
it('fails if no id is provided', (done) => {
26+
expect(() => {
27+
ClientClient.create(null, err.message);
28+
}).to.throw();
29+
30+
done();
31+
});
32+
33+
it('fails if no message is provided', (done) => {
34+
expect(() => {
35+
ClientClient.create(err.id, null);
36+
}).to.throw();
37+
38+
done();
39+
});
40+
});
41+
42+
it('creates an error object', (done) => {
43+
var error = Client.create(err.id, err.message);
44+
45+
expect(error).to.equal(err);
46+
done();
47+
});
48+
49+
it('adds meta to the error when specified', (done) => {
50+
var error = Client.create(err.id, err.message, 'meta');
51+
52+
expect(error.meta).to.equal('meta');
53+
done();
54+
});
55+
});

test/createSingle.js

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
const Code = require('code');
2+
const Lab = require('lab');
3+
4+
const JSONErrors = require('..');
5+
6+
const lab = exports.lab = Lab.script();
7+
8+
const describe = lab.describe;
9+
const it = lab.it;
10+
const expect = Code.expect;
11+
12+
var Client, err, errObject;
13+
14+
describe('JSONErrors.createSingle', () => {
15+
err = { id: 'CUSTOM_ERROR', message: 'This is a custom error'};
16+
errObject = { errors: [{ id: err.id, message: err.message }] };
17+
Client = new JSONErrors();
18+
19+
it('creates a single errors object', (done) => {
20+
var errors = Client.createSingle(err.id, err.message);
21+
22+
expect(errors).to.equal(errObject);
23+
done();
24+
});
25+
});

test/get.js

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
const Code = require('code');
2+
const Lab = require('lab');
3+
4+
const JSONErrors = require('..');
5+
6+
const lab = exports.lab = Lab.script();
7+
8+
const describe = lab.describe;
9+
const it = lab.it;
10+
const expect = Code.expect;
11+
const beforeEach = lab.beforeEach;
12+
const afterEach = lab.afterEach;
13+
14+
var Client, err, errObject;
15+
16+
describe('JSONErrors.get', () => {
17+
err = { id: 'CUSTOM_ERROR', message: 'This is a custom error message' };
18+
errObject = { errors: [{ id: err.id, message: err.message }] };
19+
20+
beforeEach((done) => {
21+
Client = new JSONErrors();
22+
Client.add(err.id, err.message);
23+
done();
24+
});
25+
26+
afterEach((done) => {
27+
Client.clear();
28+
done();
29+
});
30+
31+
it('returns errors as object', (done) => {
32+
var errors = Client.get();
33+
34+
expect(errors).to.be.an.object();
35+
expect(errors).to.equal(errObject);
36+
done();
37+
});
38+
});

test/index.js

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const Code = require('code');
2+
const Lab = require('lab');
3+
4+
const JSONErrors = require('..');
5+
6+
const lab = exports.lab = Lab.script();
7+
8+
const describe = lab.describe;
9+
const it = lab.it;
10+
const expect = Code.expect;
11+
12+
var Client = new JSONErrors();
13+
14+
describe('JSONErrors', () => {
15+
it('exports functions', (done) => {
16+
expect(Client.get).to.be.a.function();
17+
expect(Client.create).to.be.a.function();
18+
expect(Client.createSingle).to.be.a.function();
19+
expect(Client.add).to.be.a.function();
20+
expect(Client.clear).to.be.a.function();
21+
done();
22+
});
23+
});

0 commit comments

Comments
 (0)