@zendesk/zcli-core
Version:
ZCLI core libraries and services
71 lines (70 loc) • 3.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const test_1 = require("@oclif/test");
const fs = require("fs-extra");
const sinon = require("sinon");
const config_1 = require("./config");
describe('Config', () => {
describe('ensureConfigFile', () => {
const outputJsonStub = sinon.stub(fs, 'outputJson').resolves();
const config = new config_1.default();
beforeEach(() => outputJsonStub.reset());
test_1.test
.stub(fs, 'pathExists', () => Promise.resolve(true))
.stub(fs, 'outputJson', () => outputJsonStub)
.it('should not create file, if file exists', async () => {
await config.ensureConfigFile();
(0, test_1.expect)(outputJsonStub.called).to.equal(false);
});
test_1.test
.stub(fs, 'pathExists', () => Promise.resolve(false))
.it('should create file, if file does not exists', async () => {
await config.ensureConfigFile();
(0, test_1.expect)(outputJsonStub.called).to.equal(true);
});
});
describe('getConfig', () => {
const config = new config_1.default();
const mockConfig = { foo: 'bar' };
test_1.test
.stub(config, 'ensureConfigFile', () => Promise.resolve())
.stub(fs, 'readJson', () => Promise.resolve(mockConfig))
.it('should read file and return config key', async () => {
(0, test_1.expect)(await config.getConfig('foo')).to.equal('bar');
});
test_1.test
.stub(config, 'ensureConfigFile', () => Promise.resolve())
.stub(fs, 'readJson', () => Promise.resolve())
.it('should read file and return undefined if key not found', async () => {
(0, test_1.expect)(await config.getConfig('zoo')).to.equal(undefined);
});
});
describe('setConfig', () => {
const config = new config_1.default();
let mockConfig = { foo: 'bar' };
test_1.test
.stub(config, 'ensureConfigFile', () => Promise.resolve())
.stub(fs, 'readJson', () => Promise.resolve(mockConfig))
.stub(fs, 'outputJson', (...args) => {
mockConfig = args[1];
})
.it('should update config with new key value', async () => {
await config.setConfig('zoo', 'baz');
(0, test_1.expect)(mockConfig).to.deep.equal({ foo: 'bar', zoo: 'baz' });
});
});
describe('removeConfig', () => {
const config = new config_1.default();
let mockConfig = { foo: 'bar', zoo: 'baz' };
test_1.test
.stub(config, 'ensureConfigFile', () => Promise.resolve())
.stub(fs, 'readJson', () => Promise.resolve(mockConfig))
.stub(fs, 'outputJson', (...args) => {
mockConfig = args[1];
})
.it('should remove key value from config', async () => {
await config.removeConfig('foo');
(0, test_1.expect)(mockConfig).to.deep.equal({ zoo: 'baz' });
});
});
});