| 'use strict'; |
| |
| testCases.push(function (dbType, context) { |
| |
| describe(dbType + ': test.errors.js', function () { |
| |
| it('error: gimme some args', function () { |
| var db = context.db; |
| return db.find().then(function () { |
| throw Error('should not be here'); |
| }, function (err) { |
| should.exist(err); |
| }); |
| }); |
| |
| it('error: missing required key selector', function () { |
| var db = context.db; |
| return db.find({}).then(function () { |
| throw Error('should not be here'); |
| }, function (err) { |
| should.exist(err); |
| }); |
| }); |
| |
| it('error: unsupported mixed sort', function () { |
| var db = context.db; |
| var index = { |
| "index": { |
| "fields": [ |
| {"foo": "desc"}, |
| "bar" |
| ] |
| }, |
| "name": "foo-index", |
| "type": "json" |
| }; |
| return db.createIndex(index).then(function () { |
| throw new Error('should not be here'); |
| }, function (err) { |
| should.exist(err); |
| }); |
| }); |
| |
| it('error: invalid sort json', function () { |
| var db = context.db; |
| var index = { |
| "index": { |
| "fields": ["foo"] |
| }, |
| "name": "foo-index", |
| "type": "json" |
| }; |
| |
| return db.createIndex(index).then(function () { |
| return db.bulkDocs([ |
| { _id: '1', foo: 'eyo'}, |
| { _id: '2', foo: 'ebb'}, |
| { _id: '3', foo: 'eba'}, |
| { _id: '4', foo: 'abo'} |
| ]); |
| }).then(function () { |
| return db.find({ |
| selector: {foo: {"$lte": "eba"}}, |
| fields: ["_id", "foo"], |
| sort: {foo: "asc"} |
| }); |
| }).then(function () { |
| throw new Error('shouldnt be here'); |
| }, function (err) { |
| should.exist(err); |
| }); |
| }); |
| |
| it('error: conflicting sort and selector', function () { |
| var db = context.db; |
| var index = { |
| "index": { |
| "fields": ["foo"] |
| }, |
| "name": "foo-index", |
| "type": "json" |
| }; |
| return db.createIndex(index).then(function () { |
| return db.find({ |
| "selector": {"foo": {"$gt": "\u0000\u0000"}}, |
| "fields": ["_id", "foo"], |
| "sort": [{"_id": "asc"}] |
| }); |
| }).then(function (res) { |
| res.warning.should.match(/no matching index found/); |
| }); |
| }); |
| |
| it('error - no selector', function () { |
| var db = context.db; |
| var index = { |
| "index": { |
| "fields": ["foo"] |
| }, |
| "name": "foo-index", |
| "type": "json" |
| }; |
| return db.createIndex(index).then(function () { |
| return db.find({ |
| "fields": ["_id", "foo"], |
| "sort": [{"foo": "asc"}] |
| }); |
| }).then(function () { |
| throw new Error('shouldnt be here'); |
| }, function (err) { |
| should.exist(err); |
| }); |
| }); |
| |
| it('invalid ddoc', function () { |
| var db = context.db; |
| |
| var index = { |
| "index": { |
| "fields": ["foo"] |
| }, |
| "name": "foo-index", |
| "ddoc": "myddoc", |
| "type": "json" |
| }; |
| |
| return db.put({ |
| _id: '_design/myddoc', |
| views: { |
| 'foo-index': { |
| map: "function (){emit(1)}" |
| } |
| } |
| }).then(function () { |
| return db.createIndex(index).then(function () { |
| throw new Error('expected an error'); |
| }, function (err) { |
| should.exist(err); |
| }); |
| }); |
| }); |
| |
| it('non-logical errors with no other selector', function () { |
| var db = context.db; |
| |
| return db.createIndex({ |
| index: { |
| fields: ['foo'] |
| } |
| }).then(function () { |
| return db.bulkDocs([ |
| {_id: '1', foo: 1}, |
| {_id: '2', foo: 2}, |
| {_id: '3', foo: 3}, |
| {_id: '4', foo: 4} |
| ]); |
| }).then(function () { |
| return db.find({ |
| selector: { |
| foo: {$mod: {gte: 3}} |
| } |
| }).then(function () { |
| throw new Error('expected an error'); |
| }, function (err) { |
| should.exist(err); |
| }); |
| }); |
| }); |
| }); |
| }); |