autolevel.js

Automatically use the right abstract-leveldown module for your configuration
git clone git://git.finwo.net/lib/autolevel.js
Log | Files | Refs | README | LICENSE

commit 0e3390899d3059c892b8ceec408771701c8918b9
parent 886a4dd92a10e2af925a470910439b39a5c03fbe
Author: finwo <finwo@pm.me>
Date:   Mon, 17 Feb 2020 23:46:50 +0100

Recover basic unit tests

Diffstat:
Mpackage-lock.json | 40++++++++++++++++++++++++++++++++++++++++
Mpackage.json | 2++
Msrc/index.test.js | 71+++++++++++++++++++++++++++++++++++------------------------------------
3 files changed, 77 insertions(+), 36 deletions(-)

diff --git a/package-lock.json b/package-lock.json @@ -405,6 +405,12 @@ "integrity": "sha1-N3gzsEteppP/DVMzgOPdoMA4G+A=", "optional": true }, + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + }, "is-callable": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", @@ -1044,6 +1050,40 @@ "through": "~2.3.4" } }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, "rpc-stream": { "version": "2.1.2", "resolved": "http://registry.npmjs.org/rpc-stream/-/rpc-stream-2.1.2.tgz", diff --git a/package.json b/package.json @@ -16,6 +16,8 @@ "license": "BSD2", "devDependencies": { "esm": "^3.2.25", + "is-buffer": "^2.0.4", + "rimraf": "^3.0.2", "tape": "^4.11.0" }, "dependencies": { diff --git a/src/index.test.js b/src/index.test.js @@ -1,18 +1,17 @@ -//import expect from 'expect'; -//import rimraf from 'rimraf'; -//import absolutePath from './to-absolute-path'; +import test from 'tape'; +import isBuffer from 'is-buffer'; -//// Setup environment -//if ('object' !== typeof process) process = {}; -//if (!process.env) process.env = {}; -//process.env.TEST = true; -//let noop = ()=>{}; +import rimraf from 'rimraf'; +import absolutePath from './to-absolute-path'; -//// Load extends -//expect.extend(require('jest-isa')); +// Setup environment +if ('object' !== typeof process) process = {}; +if (!process.env) process.env = {}; +process.env.TEST = true; +const noop = ()=>{}; -//// Load our module -//let autolevel = require('./index'); +// Load our module +const autolevel = require('./index'); //// // Initialize references //// let kv, @@ -29,32 +28,32 @@ //// kv = await (require('./kv')('mem://')); //// }); -//test('Ensure autolevel loads', async () => { -// expect(autolevel).toBeDefined(); // Basics -// expect(autolevel).isA(Function); -// let instance = autolevel(); -// expect(instance).isA(Object); -//}); +test('Ensure autolevel loads', async t => { + t.plan(2); -//test('Verify memory adapter', async () => { -// expect(autolevel).toBeDefined(); // Basics -// expect(autolevel).isA(Function); -// let instance = autolevel('mem://'); -// expect(await instance.put('key', 'value')).toBeUndefined(); -// expect(await instance.get('key')).isA(Buffer); -// expect(await instance.get('key', {asBuffer: false})).toBe('value'); -//}); + t.equal(typeof autolevel , 'function', 'Exported module should be a function'); + t.equal(typeof autolevel(), 'object' , 'Running exported function returns an object'); +}); -//test('Verify plain adapter', async () => { -// expect(autolevel).toBeDefined(); // Basics -// expect(autolevel).isA(Function); -// let instance = autolevel('dir://data/'); -// expect(await instance.put('key', 'value')).toBeUndefined(); -// expect(await instance.get('key')).isA(Buffer); -// expect(await instance.get('key', {asBuffer: false})).toBe('value'); -// expect(await instance.close()).toBeUndefined(); -// rimraf(absolutePath('dir://data'), noop); -//}); +test('Verify memory adapter', async t => { + t.plan(3); + + const instance = autolevel('mem://'); + t.equal(await instance.put('key', 'value') , undefined, 'put returns nothing'); + t.equal(isBuffer(await instance.get('key')), true , 'get returns a buffer'); + t.equal(await instance.get('key', {asBuffer:false}) , 'value' , 'get returns original value'); +}); + +test('Verify plain adapter', async t => { + t.plan(4); + + const instance = autolevel('dir://data/'); + t.equal(await instance.put('key', 'value') , undefined, 'put returns nothing'); + t.equal(isBuffer(await instance.get('key')), true , 'get returns a buffer'); + t.equal(await instance.get('key', {asBuffer:false}) , 'value' , 'get returns original value'); + t.equal(await instance.close(), undefined, 'close returns undefined'); + rimraf(absolutePath('dir://data'), noop); +}); ///* TODO: // * mssql