From ca7b6a25dd264f1dd03ad40b030ba7bb8a126908 Mon Sep 17 00:00:00 2001 From: Jacob Heun Date: Wed, 16 May 2018 11:28:39 -0700 Subject: [PATCH] fix: add test and fix constructor License: MIT Signed-off-by: Jacob Heun --- .gitignore | 1 + package.json | 6 +++--- src/index.js | 25 +++++++++++++++---------- test/index.spec.js | 38 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 57 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index be6de95..8047247 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ node_modules lib dist test/test-repo/datastore +init-default \ No newline at end of file diff --git a/package.json b/package.json index f376cce..5c1f010 100644 --- a/package.json +++ b/package.json @@ -48,10 +48,10 @@ "pull-stream": "^3.6.1" }, "devDependencies": { - "aegir": "^12.1.3", - "async": "^2.5.0", + "aegir": "^13.1.0", + "async": "^2.6.0", "chai": "^4.1.2", - "cids": "~0.5.2", + "cids": "~0.5.3", "dirty-chai": "^2.0.1", "flow-bin": "^0.58.0", "memdown": "^1.4.1", diff --git a/src/index.js b/src/index.js index 0e36657..cc597cc 100644 --- a/src/index.js +++ b/src/index.js @@ -24,18 +24,23 @@ class LevelDatastore { /* :: db: levelup */ constructor (path /* : string */, opts /* : ?LevelOptions */) { - // Default to leveldown db - const database = opts && opts.db ? opts.db : require('leveldown') - delete opts.db + let database + + if (opts && opts.db) { + database = opts.db + delete opts.db + } else { + // Default to leveldown db + database = require('leveldown') + } this.db = levelup( - database( - path, - Object.assign({}, opts, { - compression: false, // same default as go - valueEncoding: 'binary' - }) - ), (err) => { + database(path), + Object.assign({}, opts, { + compression: false, // same default as go + valueEncoding: 'binary' + }), + (err) => { // Prevent an uncaught exception error on duplicate locks if (err) { throw err diff --git a/test/index.spec.js b/test/index.spec.js index ec559a0..b5274ea 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -2,11 +2,49 @@ /* eslint-env mocha */ 'use strict' +const chai = require('chai') +chai.use(require('dirty-chai')) +const expect = chai.expect const memdown = require('memdown') +const LevelDown = require('leveldown') const LevelStore = require('../src') describe('LevelDatastore', () => { + describe('initialization', () => { + it('should default to a leveldown database', (done) => { + const levelStore = new LevelStore('init-default') + + levelStore.open((err) => { + expect(err).to.not.exist() + expect(levelStore.db.db instanceof LevelDown).to.equal(true) + expect(levelStore.db.options).to.include({ + createIfMissing: true, + errorIfExists: false + }) + done() + }) + }) + + it('should be able to override the database', (done) => { + const levelStore = new LevelStore('init-default', { + db: memdown, + createIfMissing: true, + errorIfExists: true + }) + + levelStore.open((err) => { + expect(err).to.not.exist() + expect(levelStore.db.db instanceof memdown).to.equal(true) + expect(levelStore.db.options).to.include({ + createIfMissing: true, + errorIfExists: true + }) + done() + }) + }) + }) + describe('interface-datastore (memdown)', () => { require('interface-datastore/src/tests')({ setup (callback) {