k9s/internal/model/menu_hint_test.go

75 lines
1.6 KiB
Go

// SPDX-License-Identifier: Apache-2.0
// Copyright Authors of K9s
package model_test
import (
"sort"
"testing"
"github.com/derailed/k9s/internal/model"
"github.com/stretchr/testify/assert"
)
func TestMenuHintsSort(t *testing.T) {
uu := map[string]struct {
hh model.MenuHints
e []int
}{
"mixed": {
hh: model.MenuHints{
model.MenuHint{Mnemonic: "2", Description: "Bubba"},
model.MenuHint{Mnemonic: "b", Description: "Duh"},
model.MenuHint{Mnemonic: "a", Description: "Blee"},
model.MenuHint{Mnemonic: "1", Description: "Zorg"},
},
e: []int{3, 0, 2, 1},
},
"all_strs": {
hh: model.MenuHints{
model.MenuHint{Mnemonic: "b", Description: "Bob"},
model.MenuHint{Mnemonic: "a", Description: "Abby"},
model.MenuHint{Mnemonic: "c", Description: "Chris"},
},
e: []int{1, 0, 2},
},
"all_ints": {
hh: model.MenuHints{
model.MenuHint{Mnemonic: "3", Description: "Bob"},
model.MenuHint{Mnemonic: "2", Description: "Abby"},
model.MenuHint{Mnemonic: "1", Description: "Chris"},
},
e: []int{2, 1, 0},
},
}
for k := range uu {
u := uu[k]
t.Run(k, func(t *testing.T) {
o := make(model.MenuHints, len(u.hh))
copy(o, u.hh)
sort.Sort(u.hh)
for i, idx := range u.e {
assert.Equal(t, o[idx], u.hh[i])
}
})
}
}
func TestMenuHintBlank(t *testing.T) {
uu := map[string]struct {
hint model.MenuHint
e bool
}{
"yes": {hint: model.MenuHint{}, e: true},
"no": {hint: model.MenuHint{Mnemonic: "a", Description: "blee"}},
}
for k := range uu {
u := uu[k]
t.Run(k, func(t *testing.T) {
assert.Equal(t, u.e, u.hint.IsBlank())
})
}
}