level-test
Inject temporary and isolated level stores (
leveldown
,level-js
,memdown
or custom) into your tests.
If you are upgrading: please see UPGRADING.md
.
Usage
Create a fresh db, without refering to any file system or DOM specifics, so that the same test can be used in the server or the browser! Use whatever test framework you like.
const level = require('level-test')()
const db = level({ valueEncoding: 'json' })
In node it defaults to leveldown
for storage, using a unique temporary directory. In the browser it defaults to level-js
.
No database name is needed since level-test
generates unique random names. For disk-based systems it uses tempy
and in the browser it uses uuid/v4
.
const level = require('level-test')()
const db = level()
In either environment use of memdown
can be forced with options.mem
:
const level = require('level-test')({ mem: true })
const db = level({ valueEncoding: 'json' })
Or use any abstract-leveldown
compliant store! In this case level-test
assumes the storage is on disk and will thus create a unique temporary directory, unless you pass mem: true
.
const rocksdb = require('rocksdb')
const level = require('level-test')(rocksdb)
const db = level({ valueEncoding: 'json' })
API
ctor = levelTest([store][, options])
Returns a function ctor
that creates preconfigured levelup
instances with temporary storage. The store
if provided must be a function and abstract-leveldown
compliant. Options:
-
mem
: usememdown
asstore
(or assume thatstore
ismemdown
), default false. - Any other option will be merged into
ctor
options, the latter taking precedence.
These are equal:
const db1 = require('level-test')({ valueEncoding: 'json' })()
const db2 = require('level-test')()({ valueEncoding: 'json' })
db = ctor([options][, callback])
Returns a levelup
instance via level-packager
which wraps the underlying store with encoding-down
. In short: the db is functionally equivalent to level
. You get deferred open, encodings, Promise support, readable streams and more!
Options are passed to levelup
(which in turn passes them on to the store when opened) as well as encoding-down
.
Please refer to the levelup
documentation for usage of the optional callback
.
Contributing
Level/level-test
is an OPEN Open Source Project. This means that:
Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit. This project is more like an open wiki than a standard guarded open source project.
See the Contribution Guide for more details.
Donate
Support us with a monthly donation on Open Collective and help us continue our work. Your logo or avatar will be displayed on our 28+ GitHub repositories and npm packages.
Active financial contributors
Past financial contributors