55 lines
1.8 KiB
JavaScript
55 lines
1.8 KiB
JavaScript
'use strict';
|
|
|
|
const { validateConfig } = require('../src/configService');
|
|
const { LIVE_SIZES } = require('../src/liveSizes');
|
|
|
|
const IDS = ['cam0', 'cam1', 'cam2'];
|
|
|
|
describe('validateConfig', () => {
|
|
test('akzeptiert gültige Auflösung', () => {
|
|
const r = validateConfig([{ id: 'cam0', liveSize: '320x240', stream: true }], IDS);
|
|
expect(r.ok).toBe(true);
|
|
expect(r.errors).toHaveLength(0);
|
|
});
|
|
|
|
test('alle erlaubten Auflösungen sind gültig', () => {
|
|
for (const s of LIVE_SIZES) {
|
|
expect(validateConfig([{ id: 'cam0', liveSize: s, stream: true }], IDS).ok).toBe(true);
|
|
}
|
|
});
|
|
|
|
test('lehnt unbekannte id ab', () => {
|
|
expect(validateConfig([{ id: 'camX', liveSize: '320x240', stream: true }], IDS).ok).toBe(false);
|
|
});
|
|
|
|
test('lehnt ungültige Auflösung ab', () => {
|
|
expect(validateConfig([{ id: 'cam0', liveSize: '999x999', stream: true }], IDS).ok).toBe(false);
|
|
});
|
|
|
|
test('"Aus" (stream:false ohne liveSize) ist gültig', () => {
|
|
expect(validateConfig([{ id: 'cam2', stream: false }], IDS).ok).toBe(true);
|
|
});
|
|
|
|
test('stream muss boolean sein', () => {
|
|
expect(validateConfig([{ id: 'cam0', liveSize: '320x240', stream: 'ja' }], IDS).ok).toBe(false);
|
|
});
|
|
|
|
test('ein Fehler kippt das ganze Ergebnis (kein Teil-Apply)', () => {
|
|
const r = validateConfig([
|
|
{ id: 'cam0', liveSize: '320x240', stream: true },
|
|
{ id: 'cam1', liveSize: 'bad', stream: true },
|
|
], IDS);
|
|
expect(r.ok).toBe(false);
|
|
expect(r.errors.length).toBeGreaterThan(0);
|
|
});
|
|
|
|
test('Nicht-Array → Fehler', () => {
|
|
expect(validateConfig(undefined, IDS).ok).toBe(false);
|
|
expect(validateConfig(null, IDS).ok).toBe(false);
|
|
});
|
|
|
|
test('Eintrag ohne id → Fehler', () => {
|
|
expect(validateConfig([{ liveSize: '320x240', stream: true }], IDS).ok).toBe(false);
|
|
});
|
|
});
|