add ff parsing tests to check if types are handled correctly
This commit is contained in:
@@ -81,11 +81,8 @@ func ReadFeatureTogglesFromInitFile(featureTogglesSection *ini.Section) (map[str
|
||||
}
|
||||
|
||||
func ParseFlag(name, value string) (FeatureToggle, error) {
|
||||
var structure any
|
||||
var structure map[string]any
|
||||
|
||||
if boolean, err := strconv.ParseBool(value); err == nil {
|
||||
return FeatureToggle{Type: Boolean, Name: name, Value: boolean}, nil
|
||||
}
|
||||
if integer, err := strconv.Atoi(value); err == nil {
|
||||
return FeatureToggle{Type: Integer, Name: name, Value: integer}, nil
|
||||
}
|
||||
@@ -95,5 +92,9 @@ func ParseFlag(name, value string) (FeatureToggle, error) {
|
||||
if err := json.Unmarshal([]byte(value), &structure); err == nil {
|
||||
return FeatureToggle{Type: Structure, Name: name, Value: structure}, nil
|
||||
}
|
||||
if boolean, err := strconv.ParseBool(value); err == nil {
|
||||
return FeatureToggle{Type: Boolean, Name: name, Value: boolean}, nil
|
||||
}
|
||||
|
||||
return FeatureToggle{Type: String, Name: name, Value: value}, nil
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ func TestFeatureToggles(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "invalid boolean value should return syntax error",
|
||||
name: "conflict in type declaration is be detected",
|
||||
conf: map[string]string{
|
||||
"enable": "feature1,feature2",
|
||||
"feature2": "invalid",
|
||||
@@ -57,6 +57,22 @@ func TestFeatureToggles(t *testing.T) {
|
||||
expectedToggles: map[string]FeatureToggle{},
|
||||
err: errors.New("type mismatch during flag declaration 'feature2': boolean, string"),
|
||||
},
|
||||
{
|
||||
name: "type of the feature flag is handled correctly",
|
||||
conf: map[string]string{
|
||||
"feature1": "1", "feature2": "1.0",
|
||||
"feature3": `{"foo":"bar"}`, "feature4": "bar",
|
||||
"feature5": "t", "feature6": "T",
|
||||
},
|
||||
expectedToggles: map[string]FeatureToggle{
|
||||
"feature1": {Name: "feature1", Type: Integer, Value: 1},
|
||||
"feature2": {Name: "feature2", Type: Float, Value: 1.0},
|
||||
"feature3": {Name: "feature3", Type: Structure, Value: map[string]any{"foo": "bar"}},
|
||||
"feature4": {Name: "feature4", Type: String, Value: "bar"},
|
||||
"feature5": {Name: "feature5", Type: Boolean, Value: true},
|
||||
"feature6": {Name: "feature6", Type: Boolean, Value: true},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
|
||||
Reference in New Issue
Block a user