// Tests für das Nachrichten-Schema (gemeinsam/nachrichten.ts). Die // Prüf-Funktionen sind die Eingangstür beider Prozesse — was hier // durchkommt, wird drüben ungeprüft verwendet. import { describe, expect, it } from 'vitest' import { istDbStatus, istFensterNachricht, istHauptNachricht, istKernNachricht, } from '../src/gemeinsam/nachrichten' describe('istKernNachricht', () => { it('akzeptiert kern-bereit mit vollständigen Feldern', () => { expect( istKernNachricht({ art: 'kern-bereit', pid: 1234, nodeVersion: '24.18.1', datenbank: { ok: true, pfad: 'C:\\x\\rippy.db' }, }), ).toBe(true) }) it('akzeptiert kern-bereit auch mit Datenbank-Fehler', () => { expect( istKernNachricht({ art: 'kern-bereit', pid: 1, nodeVersion: '24.18.1', datenbank: { ok: false, fehler: 'Platte voll' }, }), ).toBe(true) }) it('akzeptiert pong und kern-fehler', () => { expect(istKernNachricht({ art: 'pong', zeit: 17 })).toBe(true) expect(istKernNachricht({ art: 'kern-fehler', text: 'kaputt' })).toBe(true) }) it('lehnt Unvollständiges und Fremdes ab', () => { expect(istKernNachricht(null)).toBe(false) expect(istKernNachricht('kern-bereit')).toBe(false) expect(istKernNachricht({ art: 'kern-bereit', pid: 1 })).toBe(false) expect(istKernNachricht({ art: 'pong', zeit: 'gleich' })).toBe(false) expect(istKernNachricht({ art: 'unbekannt' })).toBe(false) }) }) describe('istDbStatus', () => { it('verlangt zum ok-Wert den Pfad, zum Fehler den Text', () => { expect(istDbStatus({ ok: true, pfad: 'x' })).toBe(true) expect(istDbStatus({ ok: false, fehler: 'y' })).toBe(true) expect(istDbStatus({ ok: true })).toBe(false) expect(istDbStatus({ ok: false })).toBe(false) expect(istDbStatus({ ok: 'ja' })).toBe(false) }) }) describe('istFensterNachricht', () => { it('akzeptiert nur ping mit Zeit', () => { expect(istFensterNachricht({ art: 'ping', zeit: 1 })).toBe(true) expect(istFensterNachricht({ art: 'ping' })).toBe(false) expect(istFensterNachricht({ art: 'pong', zeit: 1 })).toBe(false) }) }) describe('istHauptNachricht', () => { it('akzeptiert nur fenster-port', () => { expect(istHauptNachricht({ art: 'fenster-port' })).toBe(true) expect(istHauptNachricht({ art: 'port' })).toBe(false) expect(istHauptNachricht(undefined)).toBe(false) }) })