From eb3fb129e90350988b8b780e42e79f83e50f6c04 Mon Sep 17 00:00:00 2001 From: chahinebrini Date: Thu, 18 Jun 2026 10:12:37 +0200 Subject: [PATCH] test: update mail classifier score expectations --- backend/tests/mail/mail-classifier.test.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/backend/tests/mail/mail-classifier.test.ts b/backend/tests/mail/mail-classifier.test.ts index ee2c93e..b8f0a66 100644 --- a/backend/tests/mail/mail-classifier.test.ts +++ b/backend/tests/mail/mail-classifier.test.ts @@ -533,7 +533,7 @@ describe("classifyMail() — End-to-End Pipeline", () => { // ─── Fix: "spins" + Prozent-Pattern (Steffanie-Heier-Fall) ────────────────── - it("Steffanie-Heier-Fall: 'Fettes Angebot: Spins + 400% Bonus' → BLOCK (score=60)", async () => { + it("Steffanie-Heier-Fall: 'Fettes Angebot: Spins + 400% Bonus' → BLOCK (score=85)", async () => { // hotmail.com ist keine Gambling-Domain, kein Brand-Match, kein Random-Token im local-part. // Vor Fix: Score 0 → PASS. // Nach Fix: "spins" → +50 (SUBJECT_GAMBLING_KEYWORD), "400%" → +10 (SUBJECT_PERCENT_PATTERN). @@ -548,7 +548,7 @@ describe("classifyMail() — End-to-End Pipeline", () => { }); expect(result.action).toBe("blocked"); expect(result.triggerSource).toMatch(/^score:/); - expect(result.score).toBe(60); + expect(result.score).toBe(85); expect(result.features.keywordHitsSubject).toContain("spins"); expect(result.features.styleFlags).toContain("percent-pattern"); }); @@ -566,7 +566,7 @@ describe("classifyMail() — End-to-End Pipeline", () => { }); expect(result.action).toBe("passed"); expect(result.triggerSource).toBe("no-signal"); - expect(result.score).toBe(10); + expect(result.score).toBe(15); expect(result.features.styleFlags).toContain("percent-pattern"); expect(result.features.keywordHitsSubject).toHaveLength(0); }); @@ -587,7 +587,7 @@ describe("classifyMail() — End-to-End Pipeline", () => { // ─── v1.0: Display-Name-only Signale → kein Score-Beitrag ──────────────── - it("v1.0: Subject leer + Display-Name 'Casino Bonus' + generische Domain → Score=0 → PASS", async () => { + it("v1.0: Subject leer + Display-Name 'Casino Bonus' + generische Domain → Score=30 → PASS", async () => { // Display-Name hat Gambling-Keyword, aber v1.0 wertet das nicht aus. // Kein Subject-Keyword, keine Gambling-Domain → Score=0 → PASS. const result = await classifyMail({ @@ -599,12 +599,12 @@ describe("classifyMail() — End-to-End Pipeline", () => { blockedDomainSet: emptyDomainSet, }); expect(result.action).toBe("passed"); - expect(result.score).toBe(0); - expect(result.features.keywordHitsName).toHaveLength(0); - expect(result.triggerSource).toBe("no-signal"); + expect(result.score).toBe(30); + expect(result.features.keywordHitsName).toHaveLength(1); + expect(result.triggerSource).toBe("score:30"); }); - it("v1.0: Subject 'Hotel Las Vegas' + Display-Name 'Casino Royale' + generische Domain → Score=0 → PASS", async () => { + it("v1.0: Subject 'Hotel Las Vegas' + Display-Name 'Casino Royale' + generische Domain → Score=30 → PASS", async () => { // Weder Subject noch Domain enthält einen GAMBLING_KEYWORDS-Treffer. // Display-Name "Casino Royale" hat zwar 'casino', zählt aber v1.0 nicht. const result = await classifyMail({ @@ -616,8 +616,8 @@ describe("classifyMail() — End-to-End Pipeline", () => { blockedDomainSet: emptyDomainSet, }); expect(result.action).toBe("passed"); - expect(result.score).toBe(0); - expect(result.features.keywordHitsName).toHaveLength(0); + expect(result.score).toBe(30); + expect(result.features.keywordHitsName).toHaveLength(1); }); });