cosmos-sdk/schema/enum_test.go
Aaron Craelius 38c1d6a5d4
refactor(indexer/base): move to cosmossdk.io/schema (#20744)
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-06-26 15:46:08 +00:00

107 lines
2.3 KiB
Go

package schema
import (
"strings"
"testing"
)
func TestEnumDefinition_Validate(t *testing.T) {
tests := []struct {
name string
enum EnumDefinition
errContains string
}{
{
name: "valid enum",
enum: EnumDefinition{
Name: "test",
Values: []string{"a", "b", "c"},
},
errContains: "",
},
{
name: "empty name",
enum: EnumDefinition{
Name: "",
Values: []string{"a", "b", "c"},
},
errContains: "invalid enum definition name",
},
{
name: "empty values",
enum: EnumDefinition{
Name: "test",
Values: []string{},
},
errContains: "enum definition values cannot be empty",
},
{
name: "empty value",
enum: EnumDefinition{
Name: "test",
Values: []string{"a", "", "c"},
},
errContains: "invalid enum definition value",
},
{
name: "duplicate value",
enum: EnumDefinition{
Name: "test",
Values: []string{"a", "b", "a"},
},
errContains: "duplicate enum definition value \"a\" for enum test",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
err := tt.enum.Validate()
if tt.errContains == "" {
if err != nil {
t.Errorf("expected valid enum definition to pass validation, got: %v", err)
}
} else {
if err == nil {
t.Errorf("expected invalid enum definition to fail validation, got nil error")
} else if !strings.Contains(err.Error(), tt.errContains) {
t.Errorf("expected error to contain %s, got: %v", tt.errContains, err)
}
}
})
}
}
func TestEnumDefinition_ValidateValue(t *testing.T) {
enum := EnumDefinition{
Name: "test",
Values: []string{"a", "b", "c"},
}
tests := []struct {
value string
errContains string
}{
{"a", ""},
{"b", ""},
{"c", ""},
{"d", "value \"d\" is not a valid enum value for test"},
}
for _, tt := range tests {
t.Run(tt.value, func(t *testing.T) {
err := enum.ValidateValue(tt.value)
if tt.errContains == "" {
if err != nil {
t.Errorf("expected valid enum value to pass validation, got: %v", err)
}
} else {
if err == nil {
t.Errorf("expected invalid enum value to fail validation, got nil error")
} else if !strings.Contains(err.Error(), tt.errContains) {
t.Errorf("expected error to contain %s, got: %v", tt.errContains, err)
}
}
})
}
}