From c13d657e41097ff91125c77b93256ed43cef106f Mon Sep 17 00:00:00 2001 From: Schalli Date: Wed, 23 Sep 2026 15:30:31 +0200 Subject: [PATCH] test(260923-le6): PMG-Teilsumme ohne Haelfte muss null sein Co-Authored-By: Claude Sonnet 5 --- .../api/src/proxmox/proxmox-normalize.spec.ts | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/apps/api/src/proxmox/proxmox-normalize.spec.ts b/apps/api/src/proxmox/proxmox-normalize.spec.ts index 2749250..400270f 100644 --- a/apps/api/src/proxmox/proxmox-normalize.spec.ts +++ b/apps/api/src/proxmox/proxmox-normalize.spec.ts @@ -237,4 +237,51 @@ describe('normalizePmg (Aufgabe 3, )', () => { virusCount: null, }); }); + + it('nur eine Haelfte vorhanden -> null (Spam, nur spamcount_in)', () => { + const body = { data: { spamcount_in: 10 } }; + const { metrics } = normalizePmg(body); + expect(metrics.spamCount).toBeNull(); + }); + + it('nur eine Haelfte vorhanden -> null (Spam, nur spamcount_out)', () => { + const body = { data: { spamcount_out: 2 } }; + const { metrics } = normalizePmg(body); + expect(metrics.spamCount).toBeNull(); + }); + + it('nur eine Haelfte vorhanden -> null (Viren, nur viruscount_in)', () => { + const body = { data: { viruscount_in: 1 } }; + const { metrics } = normalizePmg(body); + expect(metrics.virusCount).toBeNull(); + }); + + it('nur eine Haelfte vorhanden -> null (Viren, nur viruscount_out)', () => { + const body = { data: { viruscount_out: 3 } }; + const { metrics } = normalizePmg(body); + expect(metrics.virusCount).toBeNull(); + }); + + it('eine Haelfte ist nicht lesbar -> null (Spam, spamcount_out ist Text)', () => { + const body = { data: { spamcount_in: 10, spamcount_out: 'abc' } }; + const { metrics } = normalizePmg(body); + expect(metrics.spamCount).toBeNull(); + }); + + it('Unabhaengigkeit der Paare: Spam unvollstaendig, Viren vollstaendig -> spamCount null, virusCount 1, countIn/countOut unberuehrt', () => { + const body = { + data: { + count_in: 100, + count_out: 50, + spamcount_in: 10, + viruscount_in: 1, + viruscount_out: 0, + }, + }; + const { metrics } = normalizePmg(body); + expect(metrics.spamCount).toBeNull(); + expect(metrics.virusCount).toBe(1); + expect(metrics.countIn).toBe(100); + expect(metrics.countOut).toBe(50); + }); });