33 lines
1.3 KiB
Go
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)
|
|
}
|
|
}
|