UNPKG

navy

Version:

Quick and powerful development environments using Docker and Docker Compose

71 lines (69 loc) 2.27 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _chai = require("chai"); var _sinon = _interopRequireDefault(require("sinon")); var _middleware = require("../middleware"); /* eslint-env mocha */ function makeNavy({ driver, registered = [] } = {}) { return { name: 'env', normalisedName: 'env', getDriver: _sinon.default.stub().resolves(driver), ensurePluginsLoaded: _sinon.default.stub().resolves(), getNavyFile: _sinon.default.stub().resolves(null), externalIP: _sinon.default.stub().resolves('127.0.0.1'), _registeredMiddleware: registered }; } function makeDriver() { return { getConfig: _sinon.default.stub().resolves({ services: {} }), writeConfig: _sinon.default.stub().resolves() }; } describe('navy/middleware', function () { describe('middlewareRunner', function () { it('should be a no-op when the navy has no driver', async function () { const navy = makeNavy({ driver: null }); await (0, _middleware.middlewareRunner)(navy, { services: {} }); (0, _chai.expect)(navy.ensurePluginsLoaded.called).to.equal(false); }); it('should ensure plugins are loaded before running middleware', async function () { const driver = makeDriver(); const navy = makeNavy({ driver }); await (0, _middleware.middlewareRunner)(navy, { services: {} }); (0, _chai.expect)(navy.ensurePluginsLoaded.calledOnce).to.equal(true); }); it('should pipe the driver config through default + registered middleware and write the result', async function () { const driver = makeDriver(); const tagged = _sinon.default.stub().callsFake(async config => ({ ...config, _tagged: true })); const navy = makeNavy({ driver, registered: [tagged] }); await (0, _middleware.middlewareRunner)(navy, { services: {} }); (0, _chai.expect)(tagged.calledOnce).to.equal(true); (0, _chai.expect)(driver.writeConfig.calledOnce).to.equal(true); const written = driver.writeConfig.firstCall.args[0]; (0, _chai.expect)(written).to.have.property('_tagged', true); }); }); });