Files
Assistant/tests/semantic_evolution/capability_health_v2_test.go
2026-08-16 15:22:49 +03:00

33 lines
1.3 KiB
Go

package semantic_evolution_test
import (
"errors"
"testing"
"git.cin.su/m/Assistant/contracts/capability"
"git.cin.su/m/Assistant/modules/capability/domain"
"git.cin.su/m/Assistant/platform/ids"
)
func TestHistoricalV1HealthRemainsExplicitlyInterpretable(t *testing.T) {
historical := capability.Health{CapabilityID: capability.CapabilityID(ids.ID("historical")), State: capability.HealthDegraded, Reason: capability.ReasonCognitiveProvidersUnavailable, Revision: 1, SemanticVersion: capability.HealthV1}
if err := domain.ValidateHealth(historical); err != nil {
t.Fatalf("historical V1 health rejected: %v", err)
}
if historical.ObservedAtUnixMillis != nil {
t.Fatal("V1 must preserve the absence of V2 observation time")
}
}
func TestV2RequiresObservationTimeAndRejectsUnknownVersion(t *testing.T) {
observed := int64(1720000000000)
v2 := capability.Health{CapabilityID: capability.CapabilityID(ids.ID("current")), State: capability.HealthAvailable, Reason: capability.ReasonNone, Revision: 2, SemanticVersion: capability.HealthV2, ObservedAtUnixMillis: &observed}
if err := domain.ValidateHealth(v2); err != nil {
t.Fatalf("V2 health rejected: %v", err)
}
v2.SemanticVersion = 3
if err := domain.ValidateHealth(v2); !errors.Is(err, domain.ErrUnsupportedHealthVersion) {
t.Fatalf("unknown version error = %v", err)
}
}