package rules import "testing" func TestBlocklistRule_SenderBlocked_Rejects(t *testing.T) { r := NewBlocklistRule([]string{"spam@test.com"}) result := r.Evaluate(EmailContext{Sender: "spam@test.com"}) if result.Accepted { t.Fatal("expected reject for blocked sender") } } func TestBlocklistRule_SenderNotBlocked_Accepts(t *testing.T) { r := NewBlocklistRule([]string{"spam@test.com"}) result := r.Evaluate(EmailContext{Sender: "ok@test.com"}) if !result.Accepted { t.Fatal("expected accept for non-blocked sender") } } func TestBlocklistRule_EmptyList_Accepts(t *testing.T) { r := NewBlocklistRule(nil) result := r.Evaluate(EmailContext{Sender: "anyone@test.com"}) if !result.Accepted { t.Fatal("empty blocklist should accept all") } } func TestBlocklistRule_CaseInsensitive(t *testing.T) { r := NewBlocklistRule([]string{"Spam@Test.com"}) result := r.Evaluate(EmailContext{Sender: "spam@test.com"}) if result.Accepted { t.Fatal("blocklist should be case-insensitive") } }