navy
Version:
Quick and powerful development environments using Docker and Docker Compose
83 lines (81 loc) • 3.06 kB
JavaScript
;
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);
});
});
});