UNPKG

navy

Version:

Quick and powerful development environments using Docker and Docker Compose

83 lines (81 loc) 3.06 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _chai = require("chai"); var _sinon = _interopRequireDefault(require("sinon")); var _proxyquire = _interopRequireDefault(require("proxyquire")); /* eslint-env mocha */ describe('cli/doctor/invalid-state', function () { let sandbox; let getLaunchedNaviesStub; let startStub; let fixStub; let invalidState; beforeEach(function () { sandbox = _sinon.default.createSandbox(); getLaunchedNaviesStub = sandbox.stub().resolves([]); startStub = sandbox.stub(); fixStub = sandbox.stub().callsFake(async (msg, name, callback) => callback()); invalidState = _proxyquire.default.noCallThru()('../invalid-state', { '../../': { getLaunchedNavies: getLaunchedNaviesStub }, './util': { start: startStub, fix: fixStub } }); }); afterEach(function () { sandbox.restore(); }); describe('default export', function () { it('should log a starting message', async function () { await invalidState(); (0, _chai.expect)(startStub.calledOnce).to.equal(true); (0, _chai.expect)(startStub.firstCall.args[0]).to.contain('dangling'); }); it('should remove a navy that has no config provider', async function () { const navy = { name: 'env-1', getConfigProvider: sandbox.stub().resolves(null), delete: sandbox.stub().resolves() }; getLaunchedNaviesStub.resolves([navy]); await invalidState(); (0, _chai.expect)(fixStub.calledOnce).to.equal(true); (0, _chai.expect)(fixStub.firstCall.args[0]).to.contain('without config provider'); (0, _chai.expect)(navy.delete.calledOnce).to.equal(true); }); it('should destroy a dangling navy whose config is invalid', async function () { const configProvider = { isDangling: sandbox.stub().resolves(true) }; const navy = { name: 'env-1', getConfigProvider: sandbox.stub().resolves(configProvider), destroy: sandbox.stub().resolves() }; getLaunchedNaviesStub.resolves([navy]); await invalidState(); (0, _chai.expect)(fixStub.calledOnce).to.equal(true); (0, _chai.expect)(fixStub.firstCall.args[0]).to.contain('dangling Navy'); (0, _chai.expect)(navy.destroy.calledOnce).to.equal(true); }); it('should leave alone a navy whose config provider exists and is not dangling', async function () { const configProvider = { isDangling: sandbox.stub().resolves(false) }; const navy = { name: 'env-1', getConfigProvider: sandbox.stub().resolves(configProvider), destroy: sandbox.stub().resolves(), delete: sandbox.stub().resolves() }; getLaunchedNaviesStub.resolves([navy]); await invalidState(); (0, _chai.expect)(fixStub.called).to.equal(false); (0, _chai.expect)(navy.destroy.called).to.equal(false); (0, _chai.expect)(navy.delete.called).to.equal(false); }); }); });