This repository has been archived on 2026-05-02. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
GitBlog.md/test/config.test.js
T
2021-03-30 16:29:20 +02:00

88 lines
2.6 KiB
JavaScript

const fs = require('fs');
const path = require('path');
const configFile = 'config.json';
const tmpConfigFile = 'config.temp.json';
beforeAll(() => {
if (fs.existsSync(configFile)) {
fs.renameSync(configFile, tmpConfigFile);
}
});
afterAll(() => {
if (fs.existsSync(tmpConfigFile)) {
fs.renameSync(tmpConfigFile, configFile);
} else if (fs.existsSync(configFile)) {
fs.unlinkSync(configFile); //remove config file if remaining
}
});
test('no config', () => {
if (fs.existsSync(configFile)) {
fs.unlinkSync(configFile);
}
expect(fs.existsSync(configFile)).toBeFalsy();
const config = require('../src/config')();
expect(config).toBeDefined();
expect(config['node_port']).toBe(3000);
expect(config['data_dir']).toBe('data');
});
test('example config', () => {
if (fs.existsSync(configFile)) {
fs.unlinkSync(configFile);
}
fs.copyFileSync(path.join('src', 'config.default.json'), configFile);
const data = fs.readFileSync(configFile, { encoding: 'UTF-8' });
fs.writeFileSync(configFile, data.replace('3000', '3333'), { encoding: 'UTF-8' });
const config = require('../src/config')();
expect(config).toBeDefined();
expect(config['node_port']).toBe(3333);
expect(config['data_dir']).toBe('data');
});
test('invalid config ignored', () => {
fs.writeFileSync(configFile, 'invalid JSON');
const config = require('../src/config')();
expect(config).toBeDefined();
expect(config['node_port']).toBe(3000);
expect(config['data_dir']).toBe('data');
});
test('good config merged', () => {
fs.writeFileSync(configFile, '{"node_port":5000}');
const config = require('../src/config')();
expect(config).toBeDefined();
expect(config['node_port']).toBe(5000);
expect(config['data_dir']).toBe('data');
});
test('wrong config fixed', () => {
fs.writeFileSync(configFile, '{"node_port":"hello","data_dir":"data2"}');
const config = require('../src/config')();
expect(config).toBeDefined();
expect(config['node_port']).toBe(3000);
expect(config['data_dir']).toBe('data2');
});
test('array parsing', () => {
fs.writeFileSync(configFile, '{"home":{"hidden":["item1","item2"]}}');
const config = require('../src/config')();
expect(config).toBeDefined();
expect(config['home']['hidden']).toEqual([
'item1',
'item2',
]);
});
test('array fix', () => {
fs.writeFileSync(configFile, '{"home":{"hidden":{}}}');
const config = require('../src/config')();
expect(config).toBeDefined();
expect(config['home']['hidden']).toEqual([
'*.ejs',
'/.git*',
]);
});