blob: 84d34ccfbc41765a7c3e33d4a2ed925d3ffadba1 [file] [log] [blame]
'use strict';
testCases.push(function (dbType, context) {
describe(dbType + ': test.pick-fields.js', function () {
it('should pick shallow fields', function () {
var db = context.db;
return db.bulkDocs([
{ name: 'Mario', _id: 'mario', series: 'Mario', debut: {year: 1981, month: 'May'} },
{ name: 'Jigglypuff', _id: 'puff', series: 'Pokemon', debut: {year: 1996, month: 'June'} },
{ name: 'Link', _id: 'link', series: 'Zelda', debut: {year: 1986, month: 'July'} },
{ name: 'Donkey Kong', _id: 'dk', series: 'Mario', debut: {year: 1981, month: 'April'} },
{ name: 'Pikachu', series: 'Pokemon', _id: 'pikachu',
debut: {year: 1996, month: 'September'} },
{ name: 'Captain Falcon', _id: 'falcon', series: 'F-Zero',
debut: {year: 1990, month: 'December'} }
]).then(function () {
return db.find({
selector: {_id: {$gt: null}},
sort: ['_id'],
fields: ['name']
});
}).then(function (res) {
res.docs.should.deep.equal([
{ name: 'Donkey Kong' },
{ name: 'Captain Falcon' },
{ name: 'Link' },
{ name: 'Mario' },
{ name: 'Pikachu' },
{ name: 'Jigglypuff' } ]);
});
});
it('should pick deep fields', function () {
var db = context.db;
return db.bulkDocs([
{_id: 'a', foo: {bar: 'yo'}, bar: {baz: 'hey'}},
{_id: 'b', foo: {bar: 'sup'}, bar: {baz: 'dawg'}},
{_id: 'c', foo: true, bar: "yo"},
{_id: 'd', foo: null, bar: []}
]).then(function () {
return db.find({
selector: {_id: {$gt: null}},
sort: ['_id'],
fields: ['_id', 'bar.baz']
});
}).then(function (res) {
res.docs.should.deep.equal([
{ _id: 'a', bar: { baz: 'hey' } },
{ _id: 'b', bar: { baz: 'dawg' } },
{ _id: 'c' },
{ _id: 'd' } ]);
});
});
it('should pick really deep fields with escape', function () {
var db = context.db;
return db.bulkDocs([
{_id: 'a', really: {deeply: {nested: {'escaped.field': 'You found me!'}}}}
]).then(function () {
return db.find({
selector: {_id: {$gt: null}},
fields: ['really.deeply.nested.escaped\\.field']
});
}).then(function (res) {
res.docs.should.deep.equal([
{ really: { deeply: { nested: { 'escaped.field': 'You found me!' } } } }
]);
});
});
});
});