navy
Version:
Quick and powerful development environments using Docker and Docker Compose
94 lines (92 loc) • 2.3 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _chai = require("chai");
var _setEnvVars = _interopRequireDefault(require("../set-env-vars"));
/* eslint-env mocha */
describe('set-env-vars middleware', function () {
it('should leave the service environment unchanged when no state exists for it', function () {
const config = {
services: {
api: {
environment: {
FOO: 'bar'
}
}
}
};
const state = {
services: {}
};
const result = (0, _setEnvVars.default)(config, state);
(0, _chai.expect)(result.services.api.environment).to.eql({
FOO: 'bar'
});
});
it('should merge state.services[name].environment over the config environment', function () {
const config = {
services: {
api: {
environment: {
FOO: 'bar',
BAZ: 'qux'
}
}
}
};
const state = {
services: {
api: {
environment: {
FOO: 'overridden',
NEW: 'value'
}
}
}
};
const result = (0, _setEnvVars.default)(config, state);
(0, _chai.expect)(result.services.api.environment).to.eql({
FOO: 'overridden',
BAZ: 'qux',
NEW: 'value'
});
});
it('should produce an empty environment when neither config nor state defines one', function () {
const config = {
services: {
api: {}
}
};
const state = {
services: {}
};
const result = (0, _setEnvVars.default)(config, state);
(0, _chai.expect)(result.services.api.environment).to.eql({});
});
it('should preserve service config keys other than environment', function () {
const config = {
services: {
api: {
image: 'api:1',
environment: {
A: '1'
}
}
}
};
const state = {
services: {
api: {
environment: {
B: '2'
}
}
}
};
const result = (0, _setEnvVars.default)(config, state);
(0, _chai.expect)(result.services.api.image).to.equal('api:1');
(0, _chai.expect)(result.services.api.environment).to.eql({
A: '1',
B: '2'
});
});
});