helmfile/pkg/flags/flags_value_test.go

221 lines
6.2 KiB
Go

package flags
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestGetFlagValue(t *testing.T) {
registry := NewMockFlagRegistry()
// Register some test flags
boolValue := false
registry.values["bool-flag"] = &boolValue
stringValue := "test"
registry.values["string-flag"] = &stringValue
stringSliceValue := []string{"one", "two", "three"}
registry.values["string-slice-flag"] = &stringSliceValue
intValue := 42
registry.values["int-flag"] = &intValue
// Test getting boolean flag
gotBool, exists := GetFlagValue[bool](registry, "bool-flag")
assert.True(t, exists)
assert.Equal(t, false, gotBool)
// Test getting string flag
gotString, exists := GetFlagValue[string](registry, "string-flag")
assert.True(t, exists)
assert.Equal(t, "test", gotString)
// Test getting string slice flag
gotStringSlice, exists := GetFlagValue[[]string](registry, "string-slice-flag")
assert.True(t, exists)
assert.Equal(t, []string{"one", "two", "three"}, gotStringSlice)
// Test getting int flag
gotInt, exists := GetFlagValue[int](registry, "int-flag")
assert.True(t, exists)
assert.Equal(t, 42, gotInt)
// Test getting non-existent flag
_, exists = GetFlagValue[bool](registry, "non-existent")
assert.False(t, exists)
// Test getting flag with wrong type
_, exists = GetFlagValue[string](registry, "bool-flag")
assert.False(t, exists)
}
func TestGetBoolFlagValue(t *testing.T) {
registry := NewMockFlagRegistry()
// Register a boolean flag
boolValue := false
registry.values["bool-flag"] = &boolValue
// Test getting the flag value
value, exists := GetBoolFlagValue(registry, "bool-flag")
assert.True(t, exists)
assert.False(t, value)
// Change the value
*registry.values["bool-flag"].(*bool) = true
// Test getting the updated value
value, exists = GetBoolFlagValue(registry, "bool-flag")
assert.True(t, exists)
assert.True(t, value)
// Test getting a non-existent flag
value, exists = GetBoolFlagValue(registry, "non-existent")
assert.False(t, exists)
assert.False(t, value) // Default value for bool
// Test getting a flag with wrong type
stringValue := "test"
registry.values["string-flag"] = &stringValue
value, exists = GetBoolFlagValue(registry, "string-flag")
assert.False(t, exists)
assert.False(t, value) // Default value for bool
}
func TestGetStringFlagValue(t *testing.T) {
registry := NewMockFlagRegistry()
// Register a string flag
stringValue := "test"
registry.values["string-flag"] = &stringValue
// Test getting the flag value
value, exists := GetStringFlagValue(registry, "string-flag")
assert.True(t, exists)
assert.Equal(t, "test", value)
// Change the value
*registry.values["string-flag"].(*string) = "updated"
// Test getting the updated value
value, exists = GetStringFlagValue(registry, "string-flag")
assert.True(t, exists)
assert.Equal(t, "updated", value)
// Test getting a non-existent flag
value, exists = GetStringFlagValue(registry, "non-existent")
assert.False(t, exists)
assert.Equal(t, "", value) // Default value for string
// Test getting a flag with wrong type
boolValue := true
registry.values["bool-flag"] = &boolValue
value, exists = GetStringFlagValue(registry, "bool-flag")
assert.False(t, exists)
assert.Equal(t, "", value) // Default value for string
}
func TestGetStringSliceFlagValue(t *testing.T) {
registry := NewMockFlagRegistry()
// Register a string slice flag
sliceValue := []string{"one", "two", "three"}
registry.values["slice-flag"] = &sliceValue
// Test getting the flag value
value, exists := GetStringSliceFlagValue(registry, "slice-flag")
assert.True(t, exists)
assert.Equal(t, []string{"one", "two", "three"}, value)
// Change the value
*registry.values["slice-flag"].(*[]string) = []string{"updated"}
// Test getting the updated value
value, exists = GetStringSliceFlagValue(registry, "slice-flag")
assert.True(t, exists)
assert.Equal(t, []string{"updated"}, value)
// Test getting a non-existent flag
value, exists = GetStringSliceFlagValue(registry, "non-existent")
assert.False(t, exists)
assert.Nil(t, value) // Default value for slice
// Test getting a flag with wrong type
boolValue := true
registry.values["bool-flag"] = &boolValue
value, exists = GetStringSliceFlagValue(registry, "bool-flag")
assert.False(t, exists)
assert.Nil(t, value) // Default value for slice
}
func TestGetIntFlagValue(t *testing.T) {
registry := NewMockFlagRegistry()
// Register an int flag
intValue := 42
registry.values["int-flag"] = &intValue
// Test getting the flag value
value, exists := GetIntFlagValue(registry, "int-flag")
assert.True(t, exists)
assert.Equal(t, 42, value)
// Change the value
*registry.values["int-flag"].(*int) = 100
// Test getting the updated value
value, exists = GetIntFlagValue(registry, "int-flag")
assert.True(t, exists)
assert.Equal(t, 100, value)
// Test getting a non-existent flag
value, exists = GetIntFlagValue(registry, "non-existent")
assert.False(t, exists)
assert.Equal(t, 0, value) // Default value for int
// Test getting a flag with wrong type
boolValue := true
registry.values["bool-flag"] = &boolValue
value, exists = GetIntFlagValue(registry, "bool-flag")
assert.False(t, exists)
assert.Equal(t, 0, value) // Default value for int
}
func TestGetInt64FlagValue(t *testing.T) {
registry := NewMockFlagRegistry()
// Register an int64 flag
int64Value := int64(42)
registry.values["int64-flag"] = &int64Value
// Test getting the flag value
value, exists := GetInt64FlagValue(registry, "int64-flag")
assert.True(t, exists)
assert.Equal(t, int64(42), value)
// Test getting a non-existent flag
value, exists = GetInt64FlagValue(registry, "non-existent")
assert.False(t, exists)
assert.Equal(t, int64(0), value) // Default value for int64
}
func TestGetFloat64FlagValue(t *testing.T) {
registry := NewMockFlagRegistry()
// Register a float64 flag
float64Value := 3.14
registry.values["float64-flag"] = &float64Value
// Test getting the flag value
value, exists := GetFloat64FlagValue(registry, "float64-flag")
assert.True(t, exists)
assert.Equal(t, 3.14, value)
// Test getting a non-existent flag
value, exists = GetFloat64FlagValue(registry, "non-existent")
assert.False(t, exists)
assert.Equal(t, 0.0, value) // Default value for float64
}