diff --git a/lib/utils.js b/lib/utils.js index 9af4b12727..b7ed4ec042 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -53,6 +53,12 @@ exports.toCollectionName = function(name, pluralize) { return name; } if (typeof pluralize === 'function') { + if (typeof name !== 'string') { + throw new TypeError('Collection name must be a string'); + } + if (name.length === 0) { + throw new TypeError('Collection name cannot be empty'); + } return pluralize(name); } return name; diff --git a/test/utils.test.js b/test/utils.test.js index e8cf47b76b..9790416661 100644 --- a/test/utils.test.js +++ b/test/utils.test.js @@ -324,4 +324,31 @@ describe('utils', function() { assert.deepEqual(pojoError.metadata, { hello: 'world' }); }); }); + + describe('toCollectionName', function() { + it('returns the same name for system.profile', function() { + assert.equal(utils.toCollectionName('system.profile'), 'system.profile'); + }); + + it('returns the same name for system.indexes', function() { + assert.equal(utils.toCollectionName('system.indexes'), 'system.indexes'); + }); + + it('throws an error when name is not a string', function() { + assert.throws(() => { + utils.toCollectionName(123, () => {}); + }, /Collection name must be a string/); + }); + + it('throws an error when name is an empty string', function() { + assert.throws(() => { + utils.toCollectionName('', () => {}); + }, /Collection name cannot be empty/); + }); + + it('uses the pluralize function when provided', function() { + const pluralize = (name) => name + 's'; + assert.equal(utils.toCollectionName('test', pluralize), 'tests'); + }); + }); });