From a5df9afb3031413dab07a1da4a2639a0100e13c8 Mon Sep 17 00:00:00 2001 From: Vincent Weevers Date: Fri, 4 Oct 2019 08:28:52 +0200 Subject: [PATCH] Test manifest integration with deferred-leveldown --- test/self.js | 3 ++ test/self/manifest-test.js | 60 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 test/self/manifest-test.js diff --git a/test/self.js b/test/self.js index e7975330..7ccf3bc1 100644 --- a/test/self.js +++ b/test/self.js @@ -52,6 +52,9 @@ suite({ encodings: false }) +// Integration tests that can't use a generic testCommon.factory() +require('./self/manifest-test') + if (!process.browser) { require('./browserify-test')(test) } diff --git a/test/self/manifest-test.js b/test/self/manifest-test.js new file mode 100644 index 00000000..2ab94c62 --- /dev/null +++ b/test/self/manifest-test.js @@ -0,0 +1,60 @@ +'use strict' + +var test = require('tape') +var levelup = require('../..') +var memdown = require('memdown') +var sinon = require('sinon') + +test('manifest: additionalMethod is proxied', function (t) { + var mem = memdown() + + mem.beep = sinon.spy() + mem.supports = { additionalMethods: { beep: true } } + + var db = levelup(mem) + + t.is(typeof db.beep, 'function') + t.is(typeof levelup.prototype.beep, 'undefined') + + db.beep() + t.is(mem.beep.callCount, 0, 'deferred') + + db.on('open', function () { + t.is(mem.beep.callCount, 1) + t.same(mem.beep.getCall(0).args, []) + + db.beep('boop') + t.same(mem.beep.getCall(1).args, ['boop']) + + db.close(t.end.bind(t)) + }) +}) + +test('manifest: additionalMethod is proxied even if function does not exist', function (t) { + var mem = memdown() + mem.supports = { additionalMethods: { beep: true } } + var db = levelup(mem) + + t.is(typeof db.beep, 'function') + t.is(typeof levelup.prototype.beep, 'undefined') + t.end() +}) + +test('manifest: approximateSize() et al are proxied even if manifest does not exist', function (t) { + var mem = memdown() + + // deferred-leveldown should feature-detect these methods (for now) + mem.approximateSize = function () {} + mem.compactRange = function () {} + + mem.otherMethod = function () {} + mem.supports = null + + var db = levelup(mem) + + t.is(typeof db.approximateSize, 'function') + t.is(typeof db.compactRange, 'function') + t.is(typeof db.otherMethod, 'undefined') + + t.end() +})