85 lines
1.8 KiB
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)
|
|
}
|
|
})
|
|
}
|
|
}
|