blob: e2eb0e9b10cbf072aa7a0981f2a83b13d8fa959e [file] [log] [blame]
'use strict';
var adapters = ['local', 'http'];
adapters.forEach(function (adapter) {
describe('test.events.js-' + adapter, function () {
var dbs = {};
beforeEach(function () {
dbs.name = testUtils.adapterUrl(adapter, 'testdb');
});
afterEach(function (done) {
testUtils.cleanup([dbs.name], done);
});
it('PouchDB emits creation event', function (done) {
PouchDB.once('created', function (name) {
name.should.equal(dbs.name, 'should be same thing');
done();
});
new PouchDB(dbs.name);
});
it('PouchDB emits destruction event', function (done) {
var db = new PouchDB(dbs.name);
db.once('destroyed', done);
db.destroy();
});
it('PouchDB emits destruction event on PouchDB object', function (done) {
PouchDB.once('destroyed', function (name) {
name.should.equal(dbs.name, 'should have the same name');
done();
});
new PouchDB(dbs.name).destroy();
});
it('PouchDB emits destroyed when using {name: foo}', function () {
var db = new PouchDB({name: 'testdb'});
return new testUtils.Promise(function (resolve) {
PouchDB.once('destroyed', function (name) {
name.should.equal('testdb');
resolve();
});
db.destroy();
});
});
it('db emits destroyed on all DBs', function () {
var db1 = new PouchDB('testdb');
var db2 = new PouchDB('testdb');
return new testUtils.Promise(function (resolve) {
var called = 0;
function checkDone() {
if (++called === 2) {
resolve();
}
}
db1.once('destroyed', checkDone);
db2.once('destroyed', checkDone);
db1.destroy();
});
});
it('3900 db emits destroyed event', function () {
var db = new PouchDB('testdb');
return new testUtils.Promise(function (resolve) {
db.once('destroyed', function () {
resolve();
});
db.destroy();
});
});
it('3900 db emits destroyed event 2', function () {
var db = new PouchDB('testdb');
return new testUtils.Promise(function (resolve) {
db.once('destroyed', function () {
resolve();
});
db.destroy();
});
});
it('emit creation event', function (done) {
var db = new PouchDB(dbs.name).on('created', function (newDB) {
db.should.equal(newDB, 'should be same thing');
done();
});
});
it('#4168 multiple constructor calls don\'t leak listeners', function () {
for (var i = 0; i < 50; i++) {
new PouchDB(dbs.name);
}
});
it('4922 Destroyed is not called twice', function (done) {
var count = 0;
function destroyed() {
count++;
if (count === 1) {
setTimeout(function () {
count.should.equal(1);
PouchDB.removeListener('destroyed', destroyed);
done();
}, 50);
}
}
PouchDB.on('destroyed', destroyed);
new PouchDB(dbs.name).destroy();
});
});
});