Skip to content

Commit 3dcf425

Browse files
committed
HYPERFLEET-841 - refactor: move condition status
validation to model layer
1 parent 839e1c4 commit 3dcf425

3 files changed

Lines changed: 19 additions & 10 deletions

File tree

pkg/api/presenters/adapter_status.go

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,6 @@ import (
1010
"gorm.io/datatypes"
1111
)
1212

13-
func isValidAdapterConditionStatus(status api.AdapterConditionStatus) bool {
14-
switch status {
15-
case api.AdapterConditionTrue, api.AdapterConditionFalse, api.AdapterConditionUnknown:
16-
return true
17-
default:
18-
return false
19-
}
20-
}
21-
2213
// ConvertAdapterStatus converts openapi.AdapterStatusCreateRequest to api.AdapterStatus (GORM model)
2314
func ConvertAdapterStatus(
2415
resourceType, resourceID string,
@@ -95,7 +86,7 @@ func PresentAdapterStatus(adapterStatus *api.AdapterStatus) (openapi.AdapterStat
9586
// conditions with empty/invalid status (legacy data before validation was added).
9687
openapiConditions := make([]openapi.AdapterCondition, 0, len(conditions))
9788
for _, cond := range conditions {
98-
if !isValidAdapterConditionStatus(cond.Status) {
89+
if !cond.Status.IsValid() {
9990
continue
10091
}
10192
openapiConditions = append(openapiConditions, openapi.AdapterCondition{

pkg/api/status_types.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ const (
2121
AdapterConditionUnknown AdapterConditionStatus = "Unknown"
2222
)
2323

24+
// IsValid returns true if the status is one of the accepted enum values (True, False, Unknown).
25+
func (s AdapterConditionStatus) IsValid() bool {
26+
return s == AdapterConditionTrue || s == AdapterConditionFalse || s == AdapterConditionUnknown
27+
}
28+
2429
// Condition type constants
2530
const (
2631
ConditionTypeAvailable = "Available"

pkg/api/status_types_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,19 @@ func TestAdapterConditionStatus_Constants(t *testing.T) {
3333
// which has "True", "False", and "Unknown" values
3434
}
3535

36+
// TestAdapterConditionStatus_IsValid verifies that IsValid accepts valid statuses and rejects invalid ones
37+
func TestAdapterConditionStatus_IsValid(t *testing.T) {
38+
RegisterTestingT(t)
39+
40+
Expect(AdapterConditionTrue.IsValid()).To(BeTrue())
41+
Expect(AdapterConditionFalse.IsValid()).To(BeTrue())
42+
Expect(AdapterConditionUnknown.IsValid()).To(BeTrue())
43+
44+
Expect(AdapterConditionStatus("").IsValid()).To(BeFalse())
45+
Expect(AdapterConditionStatus("garbage").IsValid()).To(BeFalse())
46+
Expect(AdapterConditionStatus("true").IsValid()).To(BeFalse())
47+
}
48+
3649
// TestAdapterConditionStatus_StringConversion tests type casting to/from string
3750
func TestAdapterConditionStatus_StringConversion(t *testing.T) {
3851
RegisterTestingT(t)

0 commit comments

Comments
 (0)