blob: 2f1021e420be58482e85f33fc9ee247b5981ee3e [file] [log] [blame]
'use strict';
var adapters = [
['local', 'http'],
['http', 'http'],
['http', 'local'],
['local', 'local']
];
if ('saucelabs' in testUtils.params()) {
adapters = [['local', 'http'], ['http', 'local']];
}
adapters.forEach(function (adapters) {
var title = 'test.sync_events.js-' + adapters[0] + '-' + adapters[1];
describe('suite2 ' + title, function () {
var dbs = {};
beforeEach(function () {
dbs.name = testUtils.adapterUrl(adapters[0], 'testdb');
dbs.remote = testUtils.adapterUrl(adapters[1], 'test_repl_remote');
});
afterEach(function (done) {
testUtils.cleanup([dbs.name, dbs.remote], done);
});
it('#4251 Should fire paused and active on sync', function (done) {
var db = new PouchDB(dbs.name);
var remote = new PouchDB(dbs.remote);
db.bulkDocs([{_id: 'a'}, {_id: 'b'}]).then(function () {
var repl = db.sync(remote, {retry: true, live: true});
var counter = 0;
repl.on('complete', function () {
done();
});
repl.on('active', function () {
counter++;
if (counter === 1) {
// We are good, initial replication
} else if (counter === 3) {
remote.bulkDocs([{_id: 'e'}, {_id: 'f'}]);
}
});
repl.on('paused', function () {
counter++;
if (counter === 1) {
// Maybe a bug, if we have data should probably
// call active first
counter--;
} if (counter === 2) {
db.bulkDocs([{_id: 'c'}, {_id: 'd'}]);
} else if (counter === 4) {
repl.cancel();
}
});
});
});
it('#5710 Test pending property support', function (done) {
var db = new PouchDB(dbs.name);
var remote = new PouchDB(dbs.remote);
var docId = 0;
var numDocs = 10;
function generateDocs(n) {
return Array.apply(null, new Array(n)).map(function () {
docId += 1;
return {
_id: docId.toString(),
foo: Math.random().toString()
};
});
}
remote.bulkDocs(generateDocs(numDocs)).then(function () {
var repl = db.sync(remote, { retry: true, live: false, batch_size: 4 });
var pendingSum = 0;
repl.on('change', function (info) {
if (typeof info.change.pending === 'number') {
pendingSum += info.change.pending;
if (info.change.pending === 0) {
pendingSum += info.change.docs.length;
}
}
});
repl.on('complete', function () {
if (pendingSum > 0) {
pendingSum.should.equal(numDocs);
}
done();
});
});
});
});
});