// SPDX-License-Identifier: Apache-2.0
// Copyright Authors of K9s

package render_test

import (
	"testing"

	"github.com/derailed/k9s/internal/model1"
	"github.com/derailed/k9s/internal/render"
	"github.com/derailed/tcell/v2"
	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"
)

func TestNSColorer(t *testing.T) {
	uu := map[string]struct {
		re model1.RowEvent
		e  tcell.Color
	}{
		"add": {
			re: model1.RowEvent{
				Kind: model1.EventAdd,
				Row: model1.Row{
					Fields: model1.Fields{
						"blee",
						"Active",
					},
				},
			},
			e: model1.AddColor,
		},
		"update": {
			re: model1.RowEvent{
				Kind: model1.EventUpdate,
				Row: model1.Row{
					Fields: model1.Fields{
						"blee",
						"Active",
					},
				},
			},
			e: model1.StdColor,
		},
		"decorator": {
			re: model1.RowEvent{
				Kind: model1.EventAdd,
				Row: model1.Row{
					Fields: model1.Fields{
						"blee*",
						"Active",
					},
				},
			},
			e: model1.HighlightColor,
		},
	}

	h := model1.Header{
		model1.HeaderColumn{Name: "NAME"},
		model1.HeaderColumn{Name: "STATUS"},
	}

	var r render.Namespace
	for k := range uu {
		u := uu[k]
		t.Run(k, func(t *testing.T) {
			assert.Equal(t, u.e, r.ColorerFunc()("", h, &u.re))
		})
	}
}

func TestNamespaceRender(t *testing.T) {
	c := render.Namespace{}
	r := model1.NewRow(3)

	require.NoError(t, c.Render(load(t, "ns"), "-", &r))
	assert.Equal(t, "-/kube-system", r.ID)
	assert.Equal(t, model1.Fields{"kube-system", "Active"}, r.Fields[:2])
}
