k9s/internal/config/views_test.go

123 lines
2.1 KiB
Go

// SPDX-License-Identifier: Apache-2.0
// Copyright Authors of K9s
package config_test
import (
"log/slog"
"testing"
"github.com/derailed/k9s/internal/client"
"github.com/derailed/k9s/internal/config"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func init() {
slog.SetDefault(slog.New(slog.DiscardHandler))
}
func TestCustomViewLoad(t *testing.T) {
uu := map[string]struct {
cv *config.CustomView
path string
key string
e []string
}{
"empty": {},
"gvr": {
path: "testdata/views/views.yaml",
key: client.PodGVR.String(),
e: []string{"NAMESPACE", "NAME", "AGE", "IP"},
},
"gvr+ns": {
path: "testdata/views/views.yaml",
key: "v1/pods@default",
e: []string{"NAME", "IP", "AGE"},
},
}
for k, u := range uu {
t.Run(k, func(t *testing.T) {
cfg := config.NewCustomView()
require.NoError(t, cfg.Load(u.path))
assert.Equal(t, u.e, cfg.Views[u.key].Columns)
})
}
}
func TestViewSettingEquals(t *testing.T) {
uu := map[string]struct {
v1, v2 *config.ViewSetting
e bool
}{
"v1-nil-v2-nil": {
e: true,
},
"v1-v2-empty": {
v1: new(config.ViewSetting),
v2: new(config.ViewSetting),
e: true,
},
"v1-nil": {
v1: new(config.ViewSetting),
},
"nil-v2": {
v2: new(config.ViewSetting),
},
"v1-v2-blank": {
v1: &config.ViewSetting{
Columns: []string{"A"},
},
v2: new(config.ViewSetting),
},
"v1-v2-nil": {
v1: &config.ViewSetting{
Columns: []string{"A"},
},
},
"same": {
v1: &config.ViewSetting{
Columns: []string{"A", "B", "C"},
},
v2: &config.ViewSetting{
Columns: []string{"A", "B", "C"},
},
e: true,
},
"order": {
v1: &config.ViewSetting{
Columns: []string{"C", "A", "B"},
},
v2: &config.ViewSetting{
Columns: []string{"A", "B", "C"},
},
},
"delta": {
v1: &config.ViewSetting{
Columns: []string{"A", "B", "C"},
},
v2: &config.ViewSetting{
Columns: []string{"B"},
},
},
}
for k, u := range uu {
t.Run(k, func(t *testing.T) {
assert.Equalf(t, u.e, u.v1.Equals(u.v2), "%#v and %#v", u.v1, u.v2)
})
}
}