UNPKG

navy

Version:

Quick and powerful development environments using Docker and Docker Compose

67 lines (65 loc) 2.9 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/index', function () { let sandbox; let cleanComposeStub; let invalidStateStub; let invalidComposeConfigStub; let consoleLogStub; let doctorCli; function loadModule() { doctorCli = _proxyquire.default.noCallThru()('../index', { './clean-compose-files': cleanComposeStub, './invalid-state': invalidStateStub, './invalid-compose-config': invalidComposeConfigStub }); } beforeEach(function () { sandbox = _sinon.default.createSandbox(); cleanComposeStub = sandbox.stub().resolves(); invalidStateStub = sandbox.stub().resolves(); invalidComposeConfigStub = sandbox.stub().resolves(); consoleLogStub = sandbox.stub(console, 'log'); loadModule(); }); afterEach(function () { sandbox.restore(); }); describe('default export', function () { it('should run all checks in order', async function () { await doctorCli(); (0, _chai.expect)(cleanComposeStub.calledOnce).to.equal(true); (0, _chai.expect)(invalidStateStub.calledOnce).to.equal(true); (0, _chai.expect)(invalidComposeConfigStub.calledOnce).to.equal(true); (0, _chai.expect)(cleanComposeStub.calledBefore(invalidStateStub)).to.equal(true); (0, _chai.expect)(invalidStateStub.calledBefore(invalidComposeConfigStub)).to.equal(true); }); it('should print a success message when all checks pass', async function () { await doctorCli(); const printed = consoleLogStub.getCalls().map(c => c.args[0] || '').join('\n'); (0, _chai.expect)(printed).to.contain('Finished tests'); }); it('should print error stacks and a warning when checks fail', async function () { const error1 = new Error('boom1'); const error2 = new Error('boom2'); cleanComposeStub.rejects(error1); invalidStateStub.rejects(error2); await doctorCli(); const printedArgs = consoleLogStub.getCalls().map(c => c.args[0] || ''); const all = printedArgs.join('\n'); (0, _chai.expect)(all).to.contain('There were some issues'); (0, _chai.expect)(printedArgs.some(arg => typeof arg === 'string' && arg.includes(error1.stack))).to.equal(true); (0, _chai.expect)(printedArgs.some(arg => typeof arg === 'string' && arg.includes(error2.stack))).to.equal(true); }); it('should run all checks even when an early one throws', async function () { cleanComposeStub.rejects(new Error('boom')); await doctorCli(); (0, _chai.expect)(invalidStateStub.calledOnce).to.equal(true); (0, _chai.expect)(invalidComposeConfigStub.calledOnce).to.equal(true); }); }); });