Skip to content

Commit 26fd4c5

Browse files
committedMay 19, 2015
add a bunch of new errors
1 parent 9f658d5 commit 26fd4c5

16 files changed

+113
-3
lines changed
 

‎index.js

+15
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@ exports.AlreadyInUseError = exports.AlreadyInUse = require('./lib/alreadyInUse')
1414
exports.ArgumentError = exports.Argument = require('./lib/argument');
1515
exports.ArgumentNullError = exports.ArgumentNull = require('./lib/argumentNull');
1616
exports.AuthenticationRequiredError = exports.AuthenticationRequired = require('./lib/authenticationRequired');
17+
exports.ConnectionError = exports.helpers.generateClass('ConnectionError');
1718
exports.Error = exports.helpers.generateClass('Error');
1819
exports.HttpStatusError = exports.HttpStatus = require('./lib/http-status');
20+
exports.InvalidOperationError = require('./lib/invalid-operation');
1921
exports.NotFoundError = require('./lib/not-found');
2022
exports.NotImplementedError = exports.helpers.generateClass('NotImplementedError'),
2123
exports.NotSupportedError = exports.NotSupported = require('./lib/not-supported');
@@ -25,6 +27,7 @@ exports.RangeError = exports.helpers.generateClass('RangeError', { extends: Rang
2527
exports.ReferenceError = exports.helpers.generateClass('ReferenceError', { extends: ReferenceError });
2628
exports.StackOverflowError = exports.helpers.generateClass('StackOverflowError');
2729
exports.SyntaxError = exports.helpers.generateClass('SyntaxError', { extends: SyntaxError });
30+
exports.TimeoutError = require('./lib/timeout.js')
2831
exports.TypeError = exports.helpers.generateClass('TypeError', { extends: TypeError });
2932
exports.URIError = exports.helpers.generateClass('URIError', { extends: URIError });
3033
exports.ValidationError = exports.Validation = require('./lib/validation');
@@ -37,6 +40,18 @@ exports.io.DriveNotFoundError = exports.helpers.generateClass('DriveNotFoundErro
3740
exports.io.EndOfStreamError = exports.helpers.generateClass('EndOfStreamError', { extends: exports.io.IOError });
3841
exports.io.FileLoadError = require('./lib/io/file-load');
3942
exports.io.FileNotFoundError = require('./lib/io/file-not-found');
43+
exports.io.SocketError = exports.helpers.generateClass('SocketError', { extends: exports.io.IOError });
44+
45+
exports.data = {
46+
DataError: require('./lib/data/data')
47+
};
48+
exports.data.MemcachedError = exports.helpers.generateClass('MemcachedError', { extends: exports.data.DataError });
49+
exports.data.MongoDBError = exports.helpers.generateClass('MongoDBError', { extends: exports.data.DataError });
50+
exports.data.RedisError = exports.helpers.generateClass('RedisError', { extends: exports.data.DataError });
51+
exports.data.RollbackError = exports.helpers.generateClass('RollbackError', { extends: exports.data.DataError });
52+
exports.data.SQLError = exports.helpers.generateClass('SQLError', { extends: exports.data.DataError });
53+
exports.data.TransactionError = exports.helpers.generateClass('TransactionError', { extends: exports.data.DataError });
54+
4055

4156

4257
exports.Generic = exports.helpers.generateClass('GenericError'); //deprecated

‎lib/data/data.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = require('../helpers/class-generator')('DataError');

‎lib/invalid-operation.js

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
var generateClass = require('./helpers/class-generator');
2+
module.exports = generateClass("InvalidOperationError", {
3+
args: ['message', 'inner_error'],
4+
generateMessage: function(){
5+
return "Invalid Operation: " + this.message;
6+
}
7+
})

‎lib/timeout.js

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
var generateClass = require('./helpers/class-generator');
2+
module.exports = generateClass("TimeoutError", {
3+
args: ['time', 'inner_error'],
4+
generateMessage: function(){
5+
if(/^\d/.test(this.time)) return "Timeout of '" + this.time + "' exceeded";
6+
else return "Timeout exceeded: " + this.time;
7+
}
8+
})

‎package.json

+14-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "common-errors",
33
"author": "David Fenster <david@dfenster.com>",
44
"description": "Common error classes and utility functions",
5-
"version": "0.4.18",
5+
"version": "0.5.0",
66
"repository": {
77
"type": "git",
88
"url": "https://github.com/shutterstock/node-common-errors.git"
@@ -14,8 +14,7 @@
1414
}
1515
],
1616
"dependencies": {
17-
"lodash": "= 2.4.1",
18-
"route-parser": "0.0.2"
17+
"lodash": "= 2.4.1"
1918
},
2019
"devDependencies": {
2120
"mocha": "*",
@@ -31,10 +30,22 @@
3130
"error",
3231
"errors",
3332
"common errors",
33+
"exception",
34+
"exceptions",
3435
"validation",
3536
"standard",
3637
"argument",
3738
"null",
39+
"database",
40+
"data",
41+
"mysql",
42+
"sql",
43+
"db",
44+
"memcached",
45+
"redis",
46+
"transaction",
47+
"rollback",
48+
"connection",
3849
"status codes",
3950
"log",
4051
"crash",

‎tests/connection.js

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
var support = require('./support');
2+
support.testError('ConnectionError');

‎tests/data/data.js

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
var support = require('../support');
2+
support.testError('DataError', {
3+
full_name: 'data.DataError'
4+
});

‎tests/data/memcached.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
var support = require('../support');
2+
support.testError('MemcachedError', {
3+
full_name: 'data.MemcachedError',
4+
extends: require('../../lib/data/data')
5+
});

‎tests/data/mongodb.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
var support = require('../support');
2+
support.testError('MongoDBError', {
3+
full_name: 'data.MongoDBError',
4+
extends: require('../../lib/data/data')
5+
});

‎tests/data/redis.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
var support = require('../support');
2+
support.testError('RedisError', {
3+
full_name: 'data.RedisError',
4+
extends: require('../../lib/data/data')
5+
});

‎tests/data/rollback.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
var support = require('../support');
2+
support.testError('RollbackError', {
3+
full_name: 'data.RollbackError',
4+
extends: require('../../lib/data/data')
5+
});

‎tests/data/sql.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
var support = require('../support');
2+
support.testError('SQLError', {
3+
full_name: 'data.SQLError',
4+
extends: require('../../lib/data/data')
5+
});

‎tests/data/transaction.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
var support = require('../support');
2+
support.testError('TransactionError', {
3+
full_name: 'data.TransactionError',
4+
extends: require('../../lib/data/data')
5+
});

‎tests/invalid-operation.js

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
var support = require('./support');
2+
support.testError('InvalidOperationError', {
3+
message_to_assert: "Invalid Operation: test message"
4+
});

‎tests/io/socket.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
var support = require('../support');
2+
support.testError('SocketError', {
3+
full_name: 'io.SocketError',
4+
extends: require('../../lib/io/io')
5+
});

‎tests/timeout.js

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
var assert = require('assert');
2+
var errors = require('..');
3+
var name = "TimeoutError";
4+
var Err = errors[name];
5+
6+
describe(name, function(){
7+
it("should work for durations", function(){
8+
var error = new Err(100);
9+
assert.equal(error.name, name), 'Its name is correct.';
10+
assert.equal(error.message, "Timeout of '100' exceeded");
11+
assert.ok(new RegExp(error.name + ": " + error.message + "\n(.*\n)+").test(error.stack), "Stack is good");
12+
assert.ok(error instanceof Error, "It is an instanceof Error");
13+
});
14+
15+
it("should work", function(){
16+
var error = new Err("query took too long");
17+
assert.equal(error.name, name), 'Its name is correct.';
18+
assert.equal(error.message, "Timeout exceeded: query took too long");
19+
assert.ok(new RegExp(error.name + ": " + error.message + "\n(.*\n)+").test(error.stack), "Stack is good");
20+
assert.ok(error instanceof Error, "It is an instanceof Error");
21+
});
22+
23+
});

0 commit comments

Comments
 (0)
Please sign in to comment.