blob: e0cd4870eba016272179d49f535bac1551b529ed [file] [log] [blame]
'use strict';
if (!process.env.LEVEL_ADAPTER &&
!process.env.LEVEL_PREFIX &&
!process.env.AUTO_COMPACTION &&
!process.env.ADAPTER) {
// these tests don't make sense for anything other than default leveldown
var path = require('path');
var mkdirp = require('mkdirp');
var rimraf = require('rimraf');
describe('defaults', function () {
beforeEach(function () {
return new PouchDB('mydb').destroy().then(function () {
return new PouchDB('mydb', {db: require('memdown')}).destroy();
});
});
afterEach(function (done) {
rimraf.sync('./tmp/_pouch_.');
rimraf.sync('./tmp/path');
done();
});
it('should allow prefixes', function () {
var prefix = './tmp/path/to/db/1/';
var dir = path.join(prefix, '/tmp/');
var dir2 = path.join('./tmp/_pouch_./', prefix);
var dir3 = path.join(dir2, './tmp/_pouch_mydb');
mkdirp.sync(dir);
mkdirp.sync(dir2);
mkdirp.sync(dir3);
var db = new PouchDB('mydb', {prefix: prefix});
return db.info().then(function (info1) {
info1.db_name.should.equal('mydb');
return db.destroy();
});
});
it('Defaults leaks eventEmitters', function () {
PouchDB.defaults({db: require('memdown') });
PouchDB.defaults({db: require('memdown') });
PouchDB.defaults({db: require('memdown') });
PouchDB.defaults({db: require('memdown') });
});
it('should allow us to set a prefix by default', function () {
var prefix = './tmp/path/to/db/2/';
var dir = path.join(prefix, '/tmp/');
var dir2 = path.join('./tmp/_pouch_./', prefix);
var dir3 = path.join(dir2, './tmp/_pouch_mydb');
mkdirp.sync(dir);
mkdirp.sync(dir2);
mkdirp.sync(dir3);
var CustomPouch = PouchDB.defaults({
prefix: prefix
});
/* jshint newcap:false */
var db = CustomPouch({name: 'mydb'});
return db.info().then(function (info1) {
info1.db_name.should.equal('mydb');
return db.destroy();
});
});
it('should allow us to use memdown', function () {
var opts = { name: 'mydb', db: require('memdown') };
var db = new PouchDB(opts);
return db.put({_id: 'foo'}).then(function () {
var otherDB = new PouchDB('mydb');
return db.info().then(function (info1) {
return otherDB.info().then(function (info2) {
info1.doc_count.should.not.equal(info2.doc_count);
return otherDB.destroy();
}).then(function () {
return db.destroy();
});
});
});
});
it('should allow us to destroy memdown', function () {
var opts = {db: require('memdown') };
var db = new PouchDB('mydb', opts);
return db.put({_id: 'foo'}).then(function () {
var otherDB = new PouchDB('mydb', opts);
return db.info().then(function (info1) {
return otherDB.info().then(function (info2) {
info1.doc_count.should.equal(info2.doc_count);
return otherDB.destroy();
}).then(function () {
var db3 = new PouchDB('mydb', opts);
return db3.info().then(function (info) {
info.doc_count.should.equal(0);
return db3.destroy();
});
});
});
});
});
it('should allow us to use memdown by default', function () {
var CustomPouch = PouchDB.defaults({db: require('memdown')});
var db = new CustomPouch('mydb');
return db.put({_id: 'foo'}).then(function () {
var otherDB = new PouchDB('mydb');
return db.info().then(function (info1) {
return otherDB.info().then(function (info2) {
info1.doc_count.should.not.equal(info2.doc_count);
return otherDB.destroy();
}).then(function () {
return db.destroy();
});
});
});
});
it('should inform us when using memdown', function () {
var opts = { name: 'mydb', db: require('memdown') };
var db = new PouchDB(opts);
return db.info().then(function (info) {
info.backend_adapter.should.equal('MemDOWN');
});
});
it('constructor emits destroyed when using defaults', function () {
var CustomPouch = PouchDB.defaults({db: require('memdown')});
var db = new CustomPouch('mydb');
return new testUtils.Promise(function (resolve) {
CustomPouch.once('destroyed', function (name) {
name.should.equal('mydb');
resolve();
});
db.destroy();
});
});
it('db emits destroyed when using defaults', function () {
var CustomPouch = PouchDB.defaults({db: require('memdown')});
var db = new CustomPouch('mydb');
return new testUtils.Promise(function (resolve) {
db.once('destroyed', resolve);
db.destroy();
});
});
it('constructor emits creation event', function (done) {
var CustomPouch = PouchDB.defaults({db: require('memdown')});
CustomPouch.once('created', function (name) {
name.should.equal('mydb', 'should be same thing');
done();
});
new PouchDB('mydb');
});
// somewhat odd behavior (CustomPouch constructor always mirrors PouchDB),
// but better to test it explicitly
it('PouchDB emits destroyed when using defaults', function () {
var CustomPouch = PouchDB.defaults({db: require('memdown')});
var db = new CustomPouch('mydb');
return new testUtils.Promise(function (resolve) {
PouchDB.once('destroyed', function (name) {
name.should.equal('mydb');
resolve();
});
db.destroy();
});
});
// somewhat odd behavior (CustomPouch constructor always mirrors PouchDB),
// but better to test it explicitly
it('PouchDB emits created when using defaults', function (done) {
var CustomPouch = PouchDB.defaults({db: require('memdown')});
PouchDB.once('created', function (name) {
name.should.equal('mydb', 'should be same thing');
done();
});
new CustomPouch('mydb');
});
it('should be transitive (#5922)', function () {
var CustomPouch = PouchDB
.defaults({db: require('memdown')})
.defaults({});
var db = new CustomPouch('mydb');
return db.info().then(function (info) {
info.backend_adapter.should.equal('MemDOWN');
});
});
});
}