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