package engineversion import ( "testing" "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func validVersion() EngineVersion { created := time.Date(2026, 4, 27, 12, 0, 0, 0, time.UTC) return EngineVersion{ Version: "v1.2.3", ImageRef: "ghcr.io/galaxy/game:v1.2.3", Options: []byte(`{"max_planets":120}`), Status: StatusActive, CreatedAt: created, UpdatedAt: created, } } func TestStatusIsKnown(t *testing.T) { for _, status := range AllStatuses() { assert.True(t, status.IsKnown(), "want known: %q", status) } assert.False(t, Status("retired").IsKnown()) assert.False(t, Status("").IsKnown()) } func TestEngineVersionValidateHappy(t *testing.T) { require.NoError(t, validVersion().Validate()) } func TestEngineVersionValidateAcceptsEmptyOptions(t *testing.T) { record := validVersion() record.Options = nil assert.NoError(t, record.Validate()) } func TestEngineVersionValidateRejects(t *testing.T) { tests := []struct { name string mutate func(*EngineVersion) }{ {"empty version", func(v *EngineVersion) { v.Version = "" }}, {"empty image ref", func(v *EngineVersion) { v.ImageRef = "" }}, {"unknown status", func(v *EngineVersion) { v.Status = "exotic" }}, {"zero created at", func(v *EngineVersion) { v.CreatedAt = time.Time{} }}, {"zero updated at", func(v *EngineVersion) { v.UpdatedAt = time.Time{} }}, {"updated before created", func(v *EngineVersion) { v.UpdatedAt = v.CreatedAt.Add(-time.Minute) }}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { record := validVersion() tt.mutate(&record) assert.Error(t, record.Validate()) }) } }