Pulse/internal/ai/alert_provider_additional_test.go
2026-01-25 21:08:44 +00:00

66 lines
1.5 KiB
Go

package ai
import (
"testing"
"github.com/rcourtman/pulse-go-rewrite/internal/alerts"
"github.com/rcourtman/pulse-go-rewrite/internal/models"
)
type stubAlertResolver struct {
alerts []AlertInfo
clears []string
}
func (s *stubAlertResolver) GetActiveAlerts() []AlertInfo {
return s.alerts
}
func (s *stubAlertResolver) ResolveAlert(alertID string) bool {
s.clears = append(s.clears, alertID)
return true
}
type stubAlertManagerClear struct {
cleared []string
}
func (s *stubAlertManagerClear) GetActiveAlerts() []alerts.Alert {
return nil
}
func (s *stubAlertManagerClear) GetRecentlyResolved() []models.ResolvedAlert {
return nil
}
func (s *stubAlertManagerClear) ClearAlert(alertID string) bool {
s.cleared = append(s.cleared, alertID)
return true
}
func TestSetAlertResolverAndResolve(t *testing.T) {
resolver := &stubAlertResolver{}
service := &Service{
patrolService: &PatrolService{},
}
service.SetAlertResolver(resolver)
if service.patrolService.GetAlertResolver() != resolver {
t.Fatalf("expected resolver to be set on patrol service")
}
manager := &stubAlertManagerClear{}
adapter := NewAlertManagerAdapter(manager)
if !adapter.ResolveAlert("alert-1") {
t.Fatalf("expected ResolveAlert to return true")
}
if len(manager.cleared) != 1 || manager.cleared[0] != "alert-1" {
t.Fatalf("expected alert-1 to be cleared, got %v", manager.cleared)
}
adapter = NewAlertManagerAdapter(nil)
if adapter.ResolveAlert("alert-2") {
t.Fatalf("expected ResolveAlert to return false when manager nil")
}
}