From ec22570eac495ab68b123864af663cf785729ad0 Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Thu, 17 Aug 2023 21:43:18 +0200 Subject: [PATCH] Add tests for renderLines These are very simple yet, but we'll extend them in the next commits. --- pkg/gui/context/list_renderer_test.go | 74 +++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 pkg/gui/context/list_renderer_test.go diff --git a/pkg/gui/context/list_renderer_test.go b/pkg/gui/context/list_renderer_test.go new file mode 100644 index 000000000..97b64f3dc --- /dev/null +++ b/pkg/gui/context/list_renderer_test.go @@ -0,0 +1,74 @@ +package context + +import ( + "strings" + "testing" + + "github.com/samber/lo" + "github.com/stretchr/testify/assert" +) + +func TestListRenderer_renderLines(t *testing.T) { + scenarios := []struct { + name string + modelStrings []string + startIdx int + endIdx int + expectedOutput string + }{ + { + name: "Render whole list", + modelStrings: []string{"a", "b", "c"}, + startIdx: 0, + endIdx: 3, + expectedOutput: ` + a + b + c`, + }, + { + name: "Partial list, beginning", + modelStrings: []string{"a", "b", "c"}, + startIdx: 0, + endIdx: 2, + expectedOutput: ` + a + b`, + }, + { + name: "Partial list, end", + modelStrings: []string{"a", "b", "c"}, + startIdx: 1, + endIdx: 3, + expectedOutput: ` + b + c`, + }, + { + name: "Pass an endIdx greater than the model length", + modelStrings: []string{"a", "b", "c"}, + startIdx: 2, + endIdx: 5, + expectedOutput: ` + c`, + }, + } + for _, s := range scenarios { + t.Run(s.name, func(t *testing.T) { + viewModel := NewListViewModel[string](func() []string { return s.modelStrings }) + self := &ListRenderer{ + list: viewModel, + getDisplayStrings: func(startIdx int, endIdx int) [][]string { + return lo.Map(s.modelStrings[startIdx:endIdx], + func(s string, _ int) []string { return []string{s} }) + }, + } + + expectedOutput := strings.Join(lo.Map( + strings.Split(strings.TrimPrefix(s.expectedOutput, "\n"), "\n"), + func(line string, _ int) string { return strings.TrimSpace(line) }), "\n") + + assert.Equal(t, expectedOutput, self.renderLines(s.startIdx, s.endIdx)) + }) + } +}