From 50196314d5f85ab5fd28c514ca5a7a74da6ae145 Mon Sep 17 00:00:00 2001 From: Pedro Rosario Date: Thu, 22 Nov 2018 16:17:46 -0500 Subject: [PATCH 1/3] Add error to get method when no key is passed --- services/db.js | 2 ++ services/db.test.js | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/services/db.js b/services/db.js index 57be091..f1deaf7 100644 --- a/services/db.js +++ b/services/db.js @@ -35,6 +35,8 @@ function put(key, value, testCacheEnabled) { * @return {Promise} */ function get(key) { + if (!key) return Promise.reject(new Error('No key provided')); + return redis.get(key) .then(data => { if (isUri(key)) return data; diff --git a/services/db.test.js b/services/db.test.js index 22a3be6..515008a 100644 --- a/services/db.test.js +++ b/services/db.test.js @@ -47,6 +47,21 @@ describe('services/db', () => { expect(postgres.get).toHaveBeenCalledWith(KEY); }); }); + + test('it fails when no key is being passed', () => { + let rejected = false; + + redis.get.mockResolvedValue(JSON.stringify(VALUE)); + + return get(). + then(() => { + expect(rejected).to.be.true; + }) + .catch(err => { + rejected = true; + expect(err).toEqual(new Error('No key provided')); + }); + }); }); describe('put', () => { From 2fab156d432d74c46f06b0db2c22b925839070c4 Mon Sep 17 00:00:00 2001 From: Pedro Rosario Date: Thu, 22 Nov 2018 16:41:23 -0500 Subject: [PATCH 2/3] Add noKeyError util method --- services/db.js | 3 ++- services/db.test.js | 5 +++-- services/errors.js | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/services/db.js b/services/db.js index f1deaf7..dd718ee 100644 --- a/services/db.js +++ b/services/db.js @@ -3,6 +3,7 @@ var redis = require('../redis'), postgres = require('../postgres/client'), { isUri } = require('clayutils'), + { noKeyError } = require('./errors'), { CACHE_ENABLED } = require('./constants'); /** @@ -35,7 +36,7 @@ function put(key, value, testCacheEnabled) { * @return {Promise} */ function get(key) { - if (!key) return Promise.reject(new Error('No key provided')); + if (!key) return Promise.reject(noKeyError()); return redis.get(key) .then(data => { diff --git a/services/db.test.js b/services/db.test.js index 515008a..b6ec004 100644 --- a/services/db.test.js +++ b/services/db.test.js @@ -2,7 +2,8 @@ const { put, get, del, batch, createReadStream } = require('./db'), redis = require('../redis'), - postgres = require('../postgres/client'); + postgres = require('../postgres/client'), + { noKeyError } = require('./errors'); jest.mock('../redis'); jest.mock('../postgres/client'); @@ -59,7 +60,7 @@ describe('services/db', () => { }) .catch(err => { rejected = true; - expect(err).toEqual(new Error('No key provided')); + expect(err).toEqual(noKeyError()); }); }); }); diff --git a/services/errors.js b/services/errors.js index 4fd81f1..c244898 100644 --- a/services/errors.js +++ b/services/errors.js @@ -17,6 +17,19 @@ function notFoundError(key) { return error; } +/** + * Format an error for when the key + * is not provided + * + * @return {Error} + */ +function noKeyError() { + const error = new Error('No key provided'); + + error.name = 'NoKeyError'; + return error; +} + /** * Log an error * @@ -28,6 +41,7 @@ function logGenericError(file) { } module.exports.notFoundError = notFoundError; +module.exports.noKeyError = noKeyError; module.exports.logGenericError = logGenericError; // For testing From b3f71bac1fa7dfc406075aa9a5e47f990a1c79d0 Mon Sep 17 00:00:00 2001 From: Pedro Rosario Date: Tue, 27 Nov 2018 08:31:40 -0500 Subject: [PATCH 3/3] Take dot to next line --- services/db.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/db.test.js b/services/db.test.js index b6ec004..7eb67f2 100644 --- a/services/db.test.js +++ b/services/db.test.js @@ -54,8 +54,8 @@ describe('services/db', () => { redis.get.mockResolvedValue(JSON.stringify(VALUE)); - return get(). - then(() => { + return get() + .then(() => { expect(rejected).to.be.true; }) .catch(err => {