chore: test selection

Kujtim Hoxha created

- it should skip unselectable items in the middle

Change summary

internal/tui/exp/list/list_test.go                                                                      | 20 
internal/tui/exp/list/testdata/TestListSelection/should_skip_none_selectable_items_in_the_middle.golden |  7 
2 files changed, 27 insertions(+)

Detailed changes

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 {