You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
205 lines
4.7 KiB
205 lines
4.7 KiB
'use strict'
|
|
|
|
var test = require('tape')
|
|
var packager = require('.')
|
|
|
|
test('Level constructor has access to levelup errors', function (t) {
|
|
function Down () {}
|
|
t.ok(packager(Down).errors, '.errors property set on constructor')
|
|
t.end()
|
|
})
|
|
|
|
test('Level constructor relays .destroy and .repair if they exist', function (t) {
|
|
t.plan(8)
|
|
|
|
test('destroy')
|
|
test('repair')
|
|
|
|
function test (method) {
|
|
function Down () {}
|
|
|
|
Down[method] = function () {
|
|
t.same([].slice.call(arguments), args, 'supports variadic arguments')
|
|
}
|
|
|
|
var level = packager(Down)
|
|
var args = []
|
|
|
|
for (var i = 0; i < 4; i++) {
|
|
args.push(i)
|
|
level[method].apply(level, args)
|
|
}
|
|
}
|
|
})
|
|
|
|
test('Level constructor', function (t) {
|
|
t.plan(3)
|
|
function Down () {
|
|
return {
|
|
open: function (opts, cb) {
|
|
t.same(opts, {
|
|
createIfMissing: true,
|
|
errorIfExists: false,
|
|
|
|
// This is a side effect of encoding-down (mutating options)
|
|
keyEncoding: 'utf8',
|
|
valueEncoding: 'utf8'
|
|
})
|
|
}
|
|
}
|
|
}
|
|
var levelup = packager(Down)()
|
|
t.is(levelup.options.keyEncoding, 'utf8')
|
|
t.is(levelup.options.valueEncoding, 'utf8')
|
|
})
|
|
|
|
test('Level constructor with location', function (t) {
|
|
t.plan(4)
|
|
function Down (location) {
|
|
t.is(location, 'location', 'location is correct')
|
|
return {
|
|
open: function (opts, cb) {
|
|
t.same(opts, {
|
|
createIfMissing: true,
|
|
errorIfExists: false,
|
|
keyEncoding: 'utf8',
|
|
valueEncoding: 'utf8'
|
|
})
|
|
}
|
|
}
|
|
}
|
|
var levelup = packager(Down)('location')
|
|
t.is(levelup.options.keyEncoding, 'utf8')
|
|
t.is(levelup.options.valueEncoding, 'utf8')
|
|
})
|
|
|
|
test('Level constructor with location & options', function (t) {
|
|
t.plan(2)
|
|
function Down (location, opts) {
|
|
t.is(location, 'location', 'location is correct')
|
|
t.same(opts, {
|
|
prefix: 'foo'
|
|
})
|
|
return {
|
|
open: function (opts, cb) {
|
|
cb()
|
|
}
|
|
}
|
|
}
|
|
packager(Down)('location', { prefix: 'foo' })
|
|
})
|
|
|
|
test('Level constructor with callback', function (t) {
|
|
t.plan(3)
|
|
function Down () {
|
|
return {
|
|
open: function (opts, cb) {
|
|
t.same(opts, {
|
|
createIfMissing: true,
|
|
errorIfExists: false,
|
|
keyEncoding: 'utf8',
|
|
valueEncoding: 'utf8'
|
|
})
|
|
process.nextTick(cb)
|
|
}
|
|
}
|
|
}
|
|
packager(Down)(function (err, db) {
|
|
t.error(err)
|
|
t.ok(db, 'db set in callback')
|
|
})
|
|
})
|
|
|
|
test('Level constructor with location & callback', function (t) {
|
|
t.plan(4)
|
|
function Down (location) {
|
|
t.is(location, 'location', 'location is correct')
|
|
return {
|
|
open: function (opts, cb) {
|
|
t.same(opts, {
|
|
createIfMissing: true,
|
|
errorIfExists: false,
|
|
keyEncoding: 'utf8',
|
|
valueEncoding: 'utf8'
|
|
})
|
|
process.nextTick(cb)
|
|
}
|
|
}
|
|
}
|
|
packager(Down)('location', function (err, db) {
|
|
t.error(err)
|
|
t.ok(db, 'db set in callback')
|
|
})
|
|
})
|
|
|
|
test('Level constructor with location & options passed to levelup', function (t) {
|
|
t.plan(4)
|
|
var Down = function (location) {
|
|
t.is(location, 'location', 'location is correct')
|
|
return {
|
|
open: function (opts, cb) {
|
|
t.same(opts, {
|
|
createIfMissing: true,
|
|
errorIfExists: false,
|
|
keyEncoding: 'binary',
|
|
valueEncoding: 'binary'
|
|
})
|
|
}
|
|
}
|
|
}
|
|
var levelup = packager(Down)('location', {
|
|
keyEncoding: 'binary',
|
|
valueEncoding: 'binary'
|
|
})
|
|
t.is(levelup.options.keyEncoding, 'binary')
|
|
t.is(levelup.options.valueEncoding, 'binary')
|
|
})
|
|
|
|
test('Level constructor with options passed to levelup', function (t) {
|
|
t.plan(3)
|
|
var Down = function () {
|
|
return {
|
|
open: function (opts, cb) {
|
|
t.same(opts, {
|
|
createIfMissing: true,
|
|
errorIfExists: false,
|
|
keyEncoding: 'binary',
|
|
valueEncoding: 'binary'
|
|
})
|
|
}
|
|
}
|
|
}
|
|
var levelup = packager(Down)({
|
|
keyEncoding: 'binary',
|
|
valueEncoding: 'binary'
|
|
})
|
|
t.is(levelup.options.keyEncoding, 'binary')
|
|
t.is(levelup.options.valueEncoding, 'binary')
|
|
})
|
|
|
|
test('Level constructor with options & callback passed to levelup', function (t) {
|
|
t.plan(5)
|
|
var Down = function () {
|
|
return {
|
|
open: function (opts, cb) {
|
|
t.same(opts, {
|
|
createIfMissing: true,
|
|
errorIfExists: false,
|
|
keyEncoding: 'binary',
|
|
valueEncoding: 'binary'
|
|
})
|
|
process.nextTick(cb)
|
|
}
|
|
}
|
|
}
|
|
var levelup = packager(Down)({
|
|
keyEncoding: 'binary',
|
|
valueEncoding: 'binary'
|
|
}, function (err, db) {
|
|
t.error(err)
|
|
t.ok(db, 'db set in callback')
|
|
})
|
|
t.is(levelup.options.keyEncoding, 'binary')
|
|
t.is(levelup.options.valueEncoding, 'binary')
|
|
})
|