blob: 2644fa7ef9e56ef1ad1ab8e057430cd9426debb0 [file] [log] [blame]
'use strict';
var adapters = ['http', 'local'];
adapters.forEach(function (adapter) {
describe('test.bulk_get.js-' + adapter, function () {
var dbs = {};
beforeEach(function () {
dbs.name = testUtils.adapterUrl(adapter, 'testdb');
});
afterEach(function (done) {
testUtils.cleanup([dbs.name], done);
});
it('test bulk get with rev specified', function (done) {
var db = new PouchDB(dbs.name);
db.put({_id: 'foo', val: 1}).then(function (response) {
var rev = response.rev;
db.bulkGet({
docs: [
{id: 'foo', rev: rev}
]
}).then(function (response) {
var result = response.results[0];
result.id.should.equal("foo");
result.docs[0].ok._rev.should.equal(rev);
done();
});
});
});
it('test bulk get with latest=true', function () {
var db = new PouchDB(dbs.name);
var first;
return db.post({ version: 'first' })
.then(function (info) {
first = info.rev;
return db.put({
_id: info.id,
_rev: info.rev,
version: 'second'
}).then(function (info) {
return db.bulkGet({
docs: [
{id: info.id, rev: first }
],
latest: true
});
}).then(function (response) {
var result = response.results[0];
result.docs[0].ok.version.should.equal('second');
});
});
});
it('test bulk get with no rev specified', function (done) {
var db = new PouchDB(dbs.name);
db.put({_id: 'foo', val: 1}).then(function (response) {
var rev = response.rev;
db.bulkGet({
docs: [
{id: 'foo'}
]
}).then(function (response) {
var result = response.results[0];
result.id.should.equal("foo");
result.docs[0].ok._rev.should.equal(rev);
done();
});
});
});
it('_revisions is not returned by default', function (done) {
var db = new PouchDB(dbs.name);
db.put({_id: 'foo', val: 1}).then(function (response) {
var rev = response.rev;
db.bulkGet({
docs: [
{id: 'foo', rev: rev}
]
}).then(function (response) {
var result = response.results[0];
should.not.exist(result.docs[0].ok._revisions);
done();
});
});
});
it('#5886 bulkGet with reserved id', function (done) {
var db = new PouchDB(dbs.name);
db.put({_id: 'constructor', val: 1}).then(function (response) {
var rev = response.rev;
db.bulkGet({
docs: [
{id: 'constructor', rev: rev}
]
}).then(function (response) {
var result = response.results[0];
result.docs[0].ok._id.should.equal('constructor');
should.not.exist(result.docs[0].ok._revisions);
done();
});
});
});
it('_revisions is returned when specified', function (done) {
var db = new PouchDB(dbs.name);
db.put({_id: 'foo', val: 1}).then(function (response) {
var rev = response.rev;
db.bulkGet({
docs: [
{id: 'foo', rev: rev}
],
revs: true
}).then(function (response) {
var result = response.results[0];
result.docs[0].ok._revisions.ids[0].should.equal(rev.substring(2));
done();
});
});
});
it('_revisions is returned when specified, using implicit rev',
function (done) {
var db = new PouchDB(dbs.name);
db.put({_id: 'foo', val: 1}).then(function (response) {
var rev = response.rev;
db.bulkGet({
docs: [
{id: 'foo'}
],
revs: true
}).then(function (response) {
var result = response.results[0];
result.docs[0].ok._revisions.ids[0].should.equal(rev.substring(2));
done();
});
});
});
it('attachments are not included by default', function (done) {
var db = new PouchDB(dbs.name);
db.put({
_id: 'foo',
_attachments: {
'foo.txt': {
content_type: 'text/plain',
data: 'VGhpcyBpcyBhIGJhc2U2NCBlbmNvZGVkIHRleHQ='
}
}
}).then(function (response) {
var rev = response.rev;
db.bulkGet({
docs: [
{id: 'foo', rev: rev}
]
}).then(function (response) {
var result = response.results[0];
result.docs[0].ok._attachments['foo.txt'].stub.should.equal(true);
done();
});
});
});
it('attachments are included when specified', function (done) {
var db = new PouchDB(dbs.name);
db.put({
_id: 'foo',
_attachments: {
'foo.txt': {
content_type: 'text/plain',
data: 'VGhpcyBpcyBhIGJhc2U2NCBlbmNvZGVkIHRleHQ='
}
}
}).then(function (response) {
var rev = response.rev;
db.bulkGet({
docs: [
{id: 'foo', rev: rev}
],
attachments: true
}).then(function (response) {
var result = response.results[0];
result.docs[0].ok._attachments['foo.txt'].data
.should.equal("VGhpcyBpcyBhIGJhc2U2NCBlbmNvZGVkIHRleHQ=");
done();
});
});
});
it('attachments are included when specified, using implicit rev',
function (done) {
var db = new PouchDB(dbs.name);
db.put({
_id: 'foo',
_attachments: {
'foo.txt': {
content_type: 'text/plain',
data: 'VGhpcyBpcyBhIGJhc2U2NCBlbmNvZGVkIHRleHQ='
}
}
}).then(function () {
db.bulkGet({
docs: [
{id: 'foo'}
],
attachments: true
}).then(function (response) {
var result = response.results[0];
result.docs[0].ok._attachments['foo.txt'].data
.should.equal("VGhpcyBpcyBhIGJhc2U2NCBlbmNvZGVkIHRleHQ=");
done();
});
});
});
});
});