UNPKG

navy

Version:

Quick and powerful development environments using Docker and Docker Compose

75 lines (73 loc) 3.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _chai = require("chai"); var _sinon = _interopRequireDefault(require("sinon")); var _filesystem = _interopRequireDefault(require("../config-providers/filesystem")); var _npm = _interopRequireDefault(require("../config-providers/npm")); var _configProvider = require("../config-provider"); /* eslint-env mocha */ describe('config-provider', function () { let sandbox; beforeEach(function () { sandbox = _sinon.default.createSandbox(); }); afterEach(function () { sandbox.restore(); }); describe('resolveConfigProviderFromName', function () { it('should return the FileSystem provider for "filesystem"', function () { (0, _chai.expect)((0, _configProvider.resolveConfigProviderFromName)('filesystem')).to.equal(_filesystem.default); }); it('should return the NPM provider for "npm"', function () { (0, _chai.expect)((0, _configProvider.resolveConfigProviderFromName)('npm')).to.equal(_npm.default); }); it('should return null for unknown provider names', function () { (0, _chai.expect)((0, _configProvider.resolveConfigProviderFromName)('git')).to.equal(null); }); }); describe('getImportCommandLineOptions', function () { it('should return the concatenation of every provider\'s importCliOptions', function () { const options = (0, _configProvider.getImportCommandLineOptions)(); (0, _chai.expect)(options).to.be.an('array'); (0, _chai.expect)(options).to.eql([..._npm.default.importCliOptions, ..._filesystem.default.importCliOptions]); }); }); describe('getImportOptionsForCLI', function () { it('should return options from the first provider that returns a non-null value', async function () { const npmStub = sandbox.stub(_npm.default, 'getImportOptionsForCLI').resolves(null); const fsResult = { configProvider: 'filesystem' }; const fsStub = sandbox.stub(_filesystem.default, 'getImportOptionsForCLI').resolves(fsResult); const result = await (0, _configProvider.getImportOptionsForCLI)({ path: '/tmp' }); (0, _chai.expect)(result).to.equal(fsResult); (0, _chai.expect)(npmStub.calledOnce).to.equal(true); (0, _chai.expect)(fsStub.calledOnce).to.equal(true); }); it('should not call subsequent providers once one returns options', async function () { const npmResult = { configProvider: 'npm' }; const npmStub = sandbox.stub(_npm.default, 'getImportOptionsForCLI').resolves(npmResult); const fsStub = sandbox.stub(_filesystem.default, 'getImportOptionsForCLI').resolves(null); const result = await (0, _configProvider.getImportOptionsForCLI)({}); (0, _chai.expect)(result).to.equal(npmResult); (0, _chai.expect)(npmStub.calledOnce).to.equal(true); (0, _chai.expect)(fsStub.called).to.equal(false); }); it('should throw an invariant violation when no provider matches', async function () { sandbox.stub(_npm.default, 'getImportOptionsForCLI').resolves(null); sandbox.stub(_filesystem.default, 'getImportOptionsForCLI').resolves(null); let caught; try { await (0, _configProvider.getImportOptionsForCLI)({}); } catch (err) { caught = err; } (0, _chai.expect)(caught).to.be.an('error'); (0, _chai.expect)(caught.message).to.match(/CLI_IMPORT_RESOLVE_OPTIONS_ERR/); }); }); });