52 lines
1.5 KiB
JavaScript
52 lines
1.5 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
|
|
const ConfigUtils = require('../src/helper/configUtils.js');
|
|
|
|
const defaultConfig = {
|
|
functionality: {
|
|
softwareType: {
|
|
default: 'measurement',
|
|
rules: { type: 'string' },
|
|
},
|
|
},
|
|
general: {
|
|
logging: {
|
|
enabled: { default: true, rules: { type: 'boolean' } },
|
|
logLevel: {
|
|
default: 'info',
|
|
rules: {
|
|
type: 'enum',
|
|
values: [{ value: 'debug' }, { value: 'info' }, { value: 'warn' }, { value: 'error' }],
|
|
},
|
|
},
|
|
},
|
|
name: { default: 'default-name', rules: { type: 'string' } },
|
|
},
|
|
scaling: {
|
|
absMin: { default: 0, rules: { type: 'number' } },
|
|
absMax: { default: 100, rules: { type: 'number' } },
|
|
},
|
|
};
|
|
|
|
test('initConfig applies defaults', () => {
|
|
const cfg = new ConfigUtils(defaultConfig, false, 'error');
|
|
const result = cfg.initConfig({});
|
|
assert.equal(result.general.name, 'default-name');
|
|
assert.equal(result.scaling.absMax, 100);
|
|
});
|
|
|
|
test('updateConfig merges nested overrides and revalidates', () => {
|
|
const cfg = new ConfigUtils(defaultConfig, false, 'error');
|
|
const base = cfg.initConfig({ general: { name: 'sensor-a' } });
|
|
const updated = cfg.updateConfig(base, { scaling: { absMax: 150 } });
|
|
|
|
assert.equal(updated.general.name, 'sensor-a');
|
|
assert.equal(updated.scaling.absMax, 150);
|
|
});
|
|
|
|
test('constructor respects explicit logger disabled flag', () => {
|
|
const cfg = new ConfigUtils(defaultConfig, false, 'error');
|
|
assert.equal(cfg.logger.logging, false);
|
|
});
|