Pulse/internal/alerts/quiet_hours_test.go
2025-10-11 23:29:47 +00:00

71 lines
2.6 KiB
Go

package alerts
import "testing"
func newManagerWithQuietHoursSuppress(s QuietHoursSuppression) *Manager {
m := NewManager()
m.config.Schedule.QuietHours = QuietHours{
Enabled: true,
Start: "00:00",
End: "23:59",
Timezone: "UTC",
Days: map[string]bool{
"monday": true,
"tuesday": true,
"wednesday": true,
"thursday": true,
"friday": true,
"saturday": true,
"sunday": true,
},
Suppress: s,
}
return m
}
func TestShouldSuppressNotificationQuietHours(t *testing.T) {
t.Run("non-critical alerts suppressed by default", func(t *testing.T) {
m := newManagerWithQuietHoursSuppress(QuietHoursSuppression{})
alert := &Alert{ID: "warn", Type: "cpu", Level: AlertLevelWarning}
suppressed, reason := m.shouldSuppressNotification(alert)
if !suppressed || reason != "non-critical" {
t.Fatalf("expected non-critical alert to be suppressed, got suppressed=%t reason=%q", suppressed, reason)
}
})
t.Run("critical offline alerts suppressed when configured", func(t *testing.T) {
m := newManagerWithQuietHoursSuppress(QuietHoursSuppression{Offline: true})
alert := &Alert{ID: "offline", Type: "connectivity", Level: AlertLevelCritical}
suppressed, reason := m.shouldSuppressNotification(alert)
if !suppressed || reason != "offline" {
t.Fatalf("expected offline alert suppression, got suppressed=%t reason=%q", suppressed, reason)
}
})
t.Run("critical performance alerts require opt-in", func(t *testing.T) {
m := newManagerWithQuietHoursSuppress(QuietHoursSuppression{})
alert := &Alert{ID: "perf", Type: "cpu", Level: AlertLevelCritical}
suppressed, reason := m.shouldSuppressNotification(alert)
if suppressed {
t.Fatalf("expected performance alert not to be suppressed, got reason=%q", reason)
}
})
t.Run("critical performance alerts suppressed when enabled", func(t *testing.T) {
m := newManagerWithQuietHoursSuppress(QuietHoursSuppression{Performance: true})
alert := &Alert{ID: "perf-enabled", Type: "cpu", Level: AlertLevelCritical}
suppressed, reason := m.shouldSuppressNotification(alert)
if !suppressed || reason != "performance" {
t.Fatalf("expected performance alert suppression, got suppressed=%t reason=%q", suppressed, reason)
}
})
t.Run("critical storage alerts suppressed when enabled", func(t *testing.T) {
m := newManagerWithQuietHoursSuppress(QuietHoursSuppression{Storage: true})
alert := &Alert{ID: "storage", Type: "usage", Level: AlertLevelCritical}
suppressed, reason := m.shouldSuppressNotification(alert)
if !suppressed || reason != "storage" {
t.Fatalf("expected storage alert suppression, got suppressed=%t reason=%q", suppressed, reason)
}
})
}