From 966d24da22a62b3307f9ff11b73d9da59148f858 Mon Sep 17 00:00:00 2001 From: Kujtim Hoxha Date: Mon, 21 Jul 2025 10:00:19 +0200 Subject: [PATCH] chore: test selection - it should skip unselectable items in the middle --- internal/tui/exp/list/list_test.go | 20 +++++++++++++++++++ ...none_selectable_items_in_the_middle.golden | 7 +++++++ 2 files changed, 27 insertions(+) create mode 100644 internal/tui/exp/list/testdata/TestListSelection/should_skip_none_selectable_items_in_the_middle.golden diff --git a/internal/tui/exp/list/list_test.go b/internal/tui/exp/list/list_test.go index 4623d7e025dda586e78853cd4b26889705eb40de..a9d1541dee784d2ce1b652773d84138bedcb8241 100644 --- a/internal/tui/exp/list/list_test.go +++ b/internal/tui/exp/list/list_test.go @@ -500,6 +500,26 @@ func TestListSelection(t *testing.T) { assert.Equal(t, items[1].ID(), l.selectedItem) golden.RequireEqual(t, []byte(l.View())) }) + t.Run("should skip none selectable items in the middle", func(t *testing.T) { + t.Parallel() + l := New(WithDirection(Forward)).(*list) + l.SetSize(100, 10) + items := []Item{} + item := NewSelectsableItem("Item initial") + items = append(items, item) + items = append(items, NewSimpleItem("None Selectable")) + for i := range 5 { + item := NewSelectsableItem(fmt.Sprintf("Item %d", i)) + items = append(items, item) + } + cmd := l.SetItems(items) + if cmd != nil { + cmd() + } + l.SelectItemBelow() + assert.Equal(t, items[2].ID(), l.selectedItem) + golden.RequireEqual(t, []byte(l.View())) + }) } type SelectableItem interface { diff --git a/internal/tui/exp/list/testdata/TestListSelection/should_skip_none_selectable_items_in_the_middle.golden b/internal/tui/exp/list/testdata/TestListSelection/should_skip_none_selectable_items_in_the_middle.golden new file mode 100644 index 0000000000000000000000000000000000000000..81eb3372876da6a55bf90efe3bc3c5da96c3ef54 --- /dev/null +++ b/internal/tui/exp/list/testdata/TestListSelection/should_skip_none_selectable_items_in_the_middle.golden @@ -0,0 +1,7 @@ +Item initial +None Selectable +│Item 0 +Item 1 +Item 2 +Item 3 +Item 4 \ No newline at end of file