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');
+ });
+});