start on this
diff --git a/packages/pouchdb-errors/src/index.js b/packages/pouchdb-errors/src/index.js index bb1b29e..4b106f1 100644 --- a/packages/pouchdb-errors/src/index.js +++ b/packages/pouchdb-errors/src/index.js
@@ -161,6 +161,33 @@ reason: 'Provided URL is invalid' }); +var allErrors = [ + UNAUTHORIZED, + MISSING_BULK_DOCS, + MISSING_DOC, + REV_CONFLICT, + INVALID_ID, + MISSING_ID, + RESERVED_ID, + NOT_OPEN, + UNKNOWN_ERROR, + BAD_ARG, + INVALID_REQUEST, + QUERY_PARSE_ERROR, + DOC_VALIDATION, + BAD_REQUEST, + NOT_AN_OBJECT, + DB_MISSING, + WSQ_ERROR, + LDB_ERROR, + FORBIDDEN, + INVALID_REV, + FILE_EXISTS, + MISSING_STUB, + IDB_ERROR, + INVALID_URL +]; + function createError(error, reason, name) { function CustomPouchError(reason) { // inherit error properties from our parent error manually @@ -189,15 +216,12 @@ // This is for differentiating between errors with the same name and status, // eg, bad_request. var getErrorTypeByProp = function (prop, value, reason) { - var keys = Object.keys(allErrors).filter(function (key) { - var error = allErrors[key]; - return typeof error !== 'function' && error[prop] === value; + var errors = allErrors.filter(function (error) { + return error[prop] === value; }); - var key = reason && keys.filter(function (key) { - var error = allErrors[key]; - return error.message === reason; - })[0] || keys[0]; - return (key) ? allErrors[key] : null; + return reason && errors.filter(function (error) { + return error.message === reason; + })[0] || errors[0]; }; function generateErrorFromResponse(res) {
diff --git a/tests/unit/test.errors.js b/tests/unit/test.errors.js new file mode 100644 index 0000000..f81d654 --- /dev/null +++ b/tests/unit/test.errors.js
@@ -0,0 +1,33 @@ + +'use strict'; + +var should = require('chai').should(); +var PouchDB = require('../../packages/pouchdb-for-coverage'); +var clone = PouchDB.utils.clone; + +describe('test.clone.js', function () { + + it('Clones regular objects', function () { + var obj1 = {foo: 'bar'}; + var obj2 = clone(obj1); + obj1.baz = 'quuz'; + should.not.exist(obj2.baz); + }); + + it('Doesn\'t clone fancy objects', function () { + + function Kitty() { + } + + Kitty.prototype.meow = function () { + return 'meow'; + }; + + var obj1 = {kitty: new Kitty()}; + var obj2 = clone(obj1); + obj1.kitty.meow().should.equal('meow'); + obj2.kitty.meow().should.equal('meow'); + obj1.kitty.foo = 'bar'; + obj2.kitty.foo.should.equal('bar'); + }); +});