blob: b25debcb148f32f1e6e5fd0bd29c2cfd770567bd [file] [log] [blame]
'use strict';
var adapters = ['local'];
adapters.forEach(function (adapter) {
describe('test.deterministicrevs.js-' + adapter, function () {
var dbs = {};
beforeEach(function () {
dbs.name1 = testUtils.adapterUrl(adapter, 'testdb');
dbs.name2 = testUtils.adapterUrl(adapter, 'testdb2');
});
afterEach(function (done) {
testUtils.cleanup([dbs.name1, dbs.name2], done);
});
it('deterministic_revs=true so revision for two docs that are the same will be equal', function () {
var doc = {
_id: '123-this-is-an-id',
hello: 'world',
'testing': 123
};
var db1 = PouchDB(dbs.name1);
var db2 = PouchDB(dbs.name2);
return Promise.all([db1.put(doc), db2.put(doc)])
.then(function (resp) {
var resp1 = resp[0];
var resp2 = resp[1];
resp1.rev.should.equal(resp2.rev);
});
});
it('deterministic_revs=false so revision for two docs that are the same will be different', function () {
var doc = {
_id: '123-this-is-an-id',
hello: 'world',
'testing': 123
};
var db1 = PouchDB(dbs.name1, {deterministic_revs: false});
var db2 = PouchDB(dbs.name2, {deterministic_revs: false});
return Promise.all([db1.put(doc), db2.put(doc)])
.then(function (resp) {
var resp1 = resp[0];
var resp2 = resp[1];
resp1.rev.should.not.equal(resp2.rev);
});
});
it('includes revision in md5 hash', function () {
var doc = {
_id: '123-this-is-an-id',
hello: 'world',
'testing': 123,
'_rev': '1-63c3b22973694224bb406e470152b6e4'
};
var doc1 = JSON.parse(JSON.stringify(doc));
doc1._rev = '1-99c3b22973694224bb406e470152aaaa';
var db1 = PouchDB(dbs.name1);
var db2 = PouchDB(dbs.name2);
return Promise.all([
db1.bulkDocs([doc], {new_edits: false}),
db2.bulkDocs([doc1], {new_edits: false})
])
.then(function () {
doc.another = 'field';
doc1.another = 'field';
return Promise.all([db1.put(doc), db2.put(doc1)]);
})
.then(function (resp) {
resp[0].rev.should.not.equal(resp[1].rev);
});
});
it('replication and then update and delete creates same rev', function (done) {
var doc = {
_id: '123-this-is-an-id',
hello: 'world',
'testing': 123
};
var db1 = PouchDB(dbs.name1);
var db2 = PouchDB(dbs.name2);
db1.put(doc)
.then(function (resp) {
db2.replicate.from(db1)
.on('complete', function () {
doc._rev = resp.rev;
doc.newField = true;
return Promise.all([db1.put(doc), db2.put(doc)])
.then(function (resp) {
doc._rev = resp[0].rev;
return Promise.all([db1.remove(doc), db2.remove(doc)]);
})
.then(function (resp) {
return Promise.all([
db1.get(doc._id, {rev: resp[0].rev, revs_info: true}),
db2.get(doc._id, {rev: resp[0].rev, revs_info: true})
]);
})
.then(function (resp) {
resp[0].should.deep.equal(resp[1]);
done();
});
});
});
});
});
});