k9s/internal/view/command_test.go

85 lines
1.8 KiB
Go

package view
import (
"errors"
"testing"
"github.com/derailed/k9s/internal/client"
"github.com/derailed/k9s/internal/config"
"github.com/derailed/k9s/internal/dao"
"github.com/derailed/k9s/internal/view/cmd"
"github.com/stretchr/testify/assert"
)
func Test_viewMetaFor(t *testing.T) {
uu := map[string]struct {
cmd string
gvr *client.GVR
p *cmd.Interpreter
err error
}{
"empty": {
cmd: "",
gvr: client.PodGVR,
err: errors.New("`` command not found"),
},
"toast": {
cmd: "v1/pd",
gvr: client.PodGVR,
err: errors.New("`v1/pd` command not found"),
},
"gvr": {
cmd: "v1/pods",
gvr: client.PodGVR,
p: cmd.NewInterpreter("v1/pods"),
err: errors.New("blah"),
},
"short-name": {
cmd: "po",
gvr: client.PodGVR,
p: cmd.NewInterpreter("v1/pods", "po"),
err: errors.New("blee"),
},
"custom-alias": {
cmd: "pdl",
gvr: client.PodGVR,
p: cmd.NewInterpreter("v1/pods @fred 'app=blee' default", "pdl"),
err: errors.New("blee"),
},
"inception": {
cmd: "pdal blee",
gvr: client.PodGVR,
p: cmd.NewInterpreter("v1/pods @fred 'app=blee' blee", "pdal", "pod"),
err: errors.New("blee"),
},
}
c := &Command{
alias: &dao.Alias{
Aliases: config.NewAliases(),
},
}
c.alias.Define(client.PodGVR, "po", "pod", "pods", client.PodGVR.String())
c.alias.Define(client.NewGVR("pod default"), "pd")
c.alias.Define(client.NewGVR("pod @fred 'app=blee' default"), "pdl")
c.alias.Define(client.NewGVR("pdl"), "pdal")
for k, u := range uu {
t.Run(k, func(t *testing.T) {
p := cmd.NewInterpreter(u.cmd)
gvr, _, acmd, err := c.viewMetaFor(p)
if err != nil {
assert.Equal(t, u.err.Error(), err.Error())
} else {
assert.Equal(t, u.gvr, gvr)
assert.Equal(t, u.p, acmd)
}
})
}
}