k9s/internal/render/alias_test.go

97 lines
2.1 KiB
Go

// SPDX-License-Identifier: Apache-2.0
// Copyright Authors of K9s
package render_test
import (
"testing"
"github.com/derailed/k9s/internal/client"
"github.com/derailed/k9s/internal/model1"
"github.com/derailed/k9s/internal/render"
"github.com/derailed/tcell/v2"
"github.com/stretchr/testify/assert"
)
func TestAliasColorer(t *testing.T) {
var a render.Alias
h := model1.Header{
model1.HeaderColumn{Name: "A"},
model1.HeaderColumn{Name: "B"},
model1.HeaderColumn{Name: "C"},
}
r := model1.Row{ID: "g/v/r", Fields: model1.Fields{"r", "blee", "g"}}
uu := map[string]struct {
ns string
re model1.RowEvent
e tcell.Color
}{
"addAll": {
ns: client.NamespaceAll,
re: model1.RowEvent{Kind: model1.EventAdd, Row: r},
e: tcell.ColorBlue,
},
"deleteAll": {
ns: client.NamespaceAll,
re: model1.RowEvent{Kind: model1.EventDelete, Row: r},
e: tcell.ColorGray,
},
"updateAll": {
ns: client.NamespaceAll,
re: model1.RowEvent{Kind: model1.EventUpdate, Row: r},
e: tcell.ColorDefault,
},
}
for k := range uu {
u := uu[k]
t.Run(k, func(t *testing.T) {
assert.Equal(t, u.e, a.ColorerFunc()(u.ns, h, &u.re))
})
}
}
func TestAliasHeader(t *testing.T) {
h := model1.Header{
model1.HeaderColumn{Name: "RESOURCE"},
model1.HeaderColumn{Name: "GROUP"},
model1.HeaderColumn{Name: "VERSION"},
model1.HeaderColumn{Name: "COMMAND"},
}
var a render.Alias
assert.Equal(t, h, a.Header("ns-1"))
assert.Equal(t, h, a.Header(client.NamespaceAll))
}
func TestAliasRender(t *testing.T) {
var a render.Alias
o := render.AliasRes{
GVR: "fred/v1/blee",
Aliases: []string{"a", "b", "c"},
}
var r model1.Row
assert.Nil(t, a.Render(o, "fred/v1/blee", &r))
assert.Equal(t, model1.Row{
ID: "fred/v1/blee",
Fields: model1.Fields{"blee", "fred", "v1", "a b c"},
}, r)
}
func BenchmarkAlias(b *testing.B) {
o := render.AliasRes{
GVR: "fred/v1/blee",
Aliases: []string{"a", "b", "c"},
}
var a render.Alias
b.ResetTimer()
b.ReportAllocs()
for i := 0; i < b.N; i++ {
var r model1.Row
_ = a.Render(o, "aliases", &r)
}
}