'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); }); });