Skip to content
This repository was archived by the owner on Mar 23, 2023. It is now read-only.

Commit 701d10b

Browse files
committed
fix: add test and fix constructor
License: MIT Signed-off-by: Jacob Heun <[email protected]>
1 parent de0d32a commit 701d10b

File tree

3 files changed

+56
-13
lines changed

3 files changed

+56
-13
lines changed

package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@
4848
"pull-stream": "^3.6.1"
4949
},
5050
"devDependencies": {
51-
"aegir": "^12.1.3",
52-
"async": "^2.5.0",
51+
"aegir": "^13.1.0",
52+
"async": "^2.6.0",
5353
"chai": "^4.1.2",
54-
"cids": "~0.5.2",
54+
"cids": "~0.5.3",
5555
"dirty-chai": "^2.0.1",
5656
"flow-bin": "^0.58.0",
5757
"memdown": "^1.4.1",

src/index.js

+15-10
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,23 @@ class LevelDatastore {
2424
/* :: db: levelup */
2525

2626
constructor (path /* : string */, opts /* : ?LevelOptions */) {
27-
// Default to leveldown db
28-
const database = opts && opts.db ? opts.db : require('leveldown')
29-
delete opts.db
27+
let database
28+
29+
if (opts && opts.db) {
30+
database = opts.db
31+
delete opts.db
32+
} else {
33+
// Default to leveldown db
34+
database = require('leveldown')
35+
}
3036

3137
this.db = levelup(
32-
database(
33-
path,
34-
Object.assign({}, opts, {
35-
compression: false, // same default as go
36-
valueEncoding: 'binary'
37-
})
38-
), (err) => {
38+
database(path),
39+
Object.assign({}, opts, {
40+
compression: false, // same default as go
41+
valueEncoding: 'binary'
42+
}),
43+
(err) => {
3944
// Prevent an uncaught exception error on duplicate locks
4045
if (err) {
4146
throw err

test/index.spec.js

+38
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,49 @@
22
/* eslint-env mocha */
33
'use strict'
44

5+
const chai = require('chai')
6+
chai.use(require('dirty-chai'))
7+
const expect = chai.expect
58
const memdown = require('memdown')
9+
const LevelDown = require('leveldown')
610

711
const LevelStore = require('../src')
812

913
describe('LevelDatastore', () => {
14+
describe('initialization', () => {
15+
it('should default to a leveldown database', (done) => {
16+
const levelStore = new LevelStore('/tmp/level-init-default')
17+
18+
levelStore.open((err) => {
19+
expect(err).to.not.exist()
20+
expect(levelStore.db.db instanceof LevelDown).to.equal(true)
21+
expect(levelStore.db.options).to.include({
22+
createIfMissing: true,
23+
errorIfExists: false
24+
})
25+
done()
26+
})
27+
})
28+
29+
it('should be able to override the database', (done) => {
30+
const levelStore = new LevelStore('init-default', {
31+
db: memdown,
32+
createIfMissing: true,
33+
errorIfExists: true
34+
})
35+
36+
levelStore.open((err) => {
37+
expect(err).to.not.exist()
38+
expect(levelStore.db.db instanceof memdown).to.equal(true)
39+
expect(levelStore.db.options).to.include({
40+
createIfMissing: true,
41+
errorIfExists: true
42+
})
43+
done()
44+
})
45+
})
46+
})
47+
1048
describe('interface-datastore (memdown)', () => {
1149
require('interface-datastore/src/tests')({
1250
setup (callback) {

0 commit comments

Comments
 (0)