k9s/internal/config/alias_test.go

88 lines
1.7 KiB
Go

package config_test
import (
"testing"
"github.com/derailed/k9s/internal/config"
"github.com/stretchr/testify/assert"
)
func TestAliasDefine(t *testing.T) {
type aliasDef struct {
cmd string
aliases []string
}
tts := []struct {
name string
aliases []aliasDef
registeredCommands map[string]string
}{
{
name: "simple aliases",
aliases: []aliasDef{
{
cmd: "one",
aliases: []string{"blee", "duh"},
},
},
registeredCommands: map[string]string{
"blee": "one",
"duh": "one",
},
},
{
name: "duplicated aliases",
aliases: []aliasDef{
{
cmd: "one",
aliases: []string{"blee", "duh"},
}, {
cmd: "two",
aliases: []string{"blee", "duh", "fred", "zorg"},
},
},
registeredCommands: map[string]string{
"blee": "one",
"duh": "one",
"fred": "two",
"zorg": "two",
},
},
}
for _, tt := range tts {
t.Run(tt.name, func(t *testing.T) {
configAlias := config.NewAliases()
for _, aliases := range tt.aliases {
for _, a := range aliases.aliases {
configAlias.Define(a, aliases.cmd)
}
}
for alias, cmd := range tt.registeredCommands {
v, ok := configAlias.Get(alias)
assert.True(t, ok)
assert.Equal(t, cmd, v, "Wrong command for alias "+alias)
}
})
}
}
func TestAliasesLoad(t *testing.T) {
a := config.NewAliases()
assert.Nil(t, a.LoadAliases("test_assets/alias.yml"))
assert.Equal(t, 27, len(a.Alias))
}
func TestAliasesSave(t *testing.T) {
a := config.NewAliases()
a.Alias["test"] = "fred"
a.Alias["blee"] = "duh"
a.SaveAliases("/tmp/a.yml")
assert.Nil(t, a.LoadAliases("/tmp/a.yml"))
assert.Equal(t, 28, len(a.Alias))
}