config: Add GetFeature, SetFeature to ConfigFile

Signed-off-by: Laura Brehm <laurabrehm@hey.com>
This commit is contained in:
Laura Brehm 2024-03-25 12:07:50 +00:00
parent b4d03289a7
commit b463a15f78
No known key found for this signature in database
GPG Key ID: CFBF847B4A313468
2 changed files with 77 additions and 0 deletions

View File

@ -351,3 +351,26 @@ func (configFile *ConfigFile) SetPluginConfig(pluginname, option, value string)
delete(configFile.Plugins, pluginname) delete(configFile.Plugins, pluginname)
} }
} }
// GetFeature retrieves the given key from the config features map.
func (configFile *ConfigFile) GetFeature(key string) (string, bool) {
if configFile.Features == nil {
return "", false
}
v, ok := configFile.Features[key]
return v, ok
}
// SetFeature sets the key to the given value in the config features map.
// If the features field is nil, it initializes a new map.
// Passing a value of "" will remove the key-value pair from the map.
func (configFile *ConfigFile) SetFeature(key, value string) {
if configFile.Features == nil {
configFile.Features = make(map[string]string)
}
if value != "" {
configFile.Features[key] = value
} else {
delete(configFile.Features, key)
}
}

View File

@ -602,3 +602,57 @@ func TestPluginConfig(t *testing.T) {
assert.NilError(t, err) assert.NilError(t, err)
golden.Assert(t, string(cfg), "plugin-config-2.golden") golden.Assert(t, string(cfg), "plugin-config-2.golden")
} }
func TestSetFeature(t *testing.T) {
t.Run("new feature", func(t *testing.T) {
configFile := &ConfigFile{}
configFile.SetFeature("foo", "bar")
assert.Equal(t, "bar", configFile.Features["foo"])
})
t.Run("update key", func(t *testing.T) {
configFile := &ConfigFile{}
configFile.SetFeature("foo", "bar")
assert.Equal(t, "bar", configFile.Features["foo"])
configFile.SetFeature("foo", "baz")
assert.Equal(t, "baz", configFile.Features["foo"])
})
t.Run("remove feature", func(t *testing.T) {
configFile := &ConfigFile{}
configFile.SetFeature("foo", "bar")
assert.Equal(t, "bar", configFile.Features["foo"])
configFile.SetFeature("foo", "")
_, exists := configFile.Features["foo"]
assert.Check(t, !exists)
})
}
func TestGetFeature(t *testing.T) {
t.Run("feature exists", func(t *testing.T) {
configFile := &ConfigFile{}
configFile.Features = map[string]string{
"foo": "bar",
}
f, ok := configFile.GetFeature("foo")
assert.Check(t, ok)
assert.Equal(t, "bar", f)
})
t.Run("missing feature", func(t *testing.T) {
configFile := &ConfigFile{}
f, ok := configFile.GetFeature("baz")
assert.Check(t, !ok)
assert.Equal(t, "", f)
})
}