navy
Version:
Quick and powerful development environments using Docker and Docker Compose
45 lines (43 loc) • 1.82 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _chai = require("chai");
var _sinon = _interopRequireDefault(require("sinon"));
var _path = _interopRequireDefault(require("path"));
var _fs = _interopRequireDefault(require("../fs"));
var _navyrc = _interopRequireDefault(require("../navyrc"));
/* eslint-env mocha */
describe('navyrc', function () {
describe('getNavyRc', function () {
let sandbox;
beforeEach(function () {
sandbox = _sinon.default.createSandbox();
});
afterEach(function () {
sandbox.restore();
});
it('should read and parse the .navyrc JSON file from the given directory', async function () {
const config = {
services: ['api', 'web'],
plugins: ['nodejs']
};
const readStub = sandbox.stub(_fs.default, 'readFileAsync').resolves(JSON.stringify(config));
const result = await (0, _navyrc.default)('/some/dir');
(0, _chai.expect)(result).to.eql(config);
(0, _chai.expect)(readStub.calledOnce).to.equal(true);
(0, _chai.expect)(readStub.firstCall.args[0]).to.equal(_path.default.join('/some/dir', '.navyrc'));
});
it('should return null when the file cannot be read', async function () {
const err = Object.assign(new Error('not found'), {
code: 'ENOENT'
});
sandbox.stub(_fs.default, 'readFileAsync').rejects(err);
const result = await (0, _navyrc.default)('/missing/dir');
(0, _chai.expect)(result).to.equal(null);
});
it('should return null when the file content is not valid JSON', async function () {
sandbox.stub(_fs.default, 'readFileAsync').resolves('not json {{{');
const result = await (0, _navyrc.default)('/dir');
(0, _chai.expect)(result).to.equal(null);
});
});
});