forked from public/fvtt-cthulhu-eternal
65 lines
1.9 KiB
JavaScript
65 lines
1.9 KiB
JavaScript
|
'use strict'
|
||
|
|
||
|
let db
|
||
|
let keySequence = 0
|
||
|
|
||
|
const testKey = () => 'test' + (++keySequence)
|
||
|
|
||
|
exports.all = function (test, testCommon) {
|
||
|
test('setup', async function (t) {
|
||
|
db = testCommon.factory()
|
||
|
return db.open()
|
||
|
})
|
||
|
|
||
|
// NOTE: adapted from encoding-down
|
||
|
test('get() and getMany() forward decode error', function (t) {
|
||
|
const key = testKey()
|
||
|
const valueEncoding = {
|
||
|
encode: (v) => v,
|
||
|
decode: (v) => { throw new Error('decode error xyz') },
|
||
|
format: 'utf8'
|
||
|
}
|
||
|
|
||
|
db.put(key, 'bar', { valueEncoding }, function (err) {
|
||
|
t.ifError(err, 'no put() error')
|
||
|
|
||
|
db.get(key, { valueEncoding }, function (err, value) {
|
||
|
t.is(err && err.code, 'LEVEL_DECODE_ERROR')
|
||
|
t.is(err && err.cause && err.cause.message, 'decode error xyz')
|
||
|
t.is(value, undefined)
|
||
|
|
||
|
db.getMany(['other-key', key], { valueEncoding }, function (err, values) {
|
||
|
t.is(err && err.code, 'LEVEL_DECODE_ERROR')
|
||
|
t.is(err && err.cause && err.cause.message, 'decode error xyz')
|
||
|
t.is(values, undefined)
|
||
|
t.end()
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
|
||
|
// NOTE: adapted from encoding-down
|
||
|
test('get() and getMany() yield encoding error if stored value is invalid', function (t) {
|
||
|
const key = testKey()
|
||
|
|
||
|
db.put(key, 'this {} is [] not : json', { valueEncoding: 'utf8' }, function (err) {
|
||
|
t.ifError(err, 'no put() error')
|
||
|
|
||
|
db.get(key, { valueEncoding: 'json' }, function (err) {
|
||
|
t.is(err && err.code, 'LEVEL_DECODE_ERROR')
|
||
|
t.is(err && err.cause.name, 'SyntaxError') // From JSON.parse()
|
||
|
|
||
|
db.getMany(['other-key', key], { valueEncoding: 'json' }, function (err) {
|
||
|
t.is(err && err.code, 'LEVEL_DECODE_ERROR')
|
||
|
t.is(err && err.cause.name, 'SyntaxError') // From JSON.parse()
|
||
|
t.end()
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('teardown', async function (t) {
|
||
|
return db.close()
|
||
|
})
|
||
|
}
|