on main help sign in
chore: test selection

- it should skip unselectable items in the middle

commit966d24da22a62b3307f9ff11b73d9da59148f858 authorKujtim Hoxha <kujtimii.h@gmail.com> dateMon 21 Jul 2025, 10:00 (1 year ago) parent3e18da5
2 files changed+27
internal/tui/exp/list/list_test.go+20 internal/tui/exp/list/testdata/TestListSelection/should_skip_none_selectable_items_in_the_middle.golden+7
internal/tui/exp/list/list_test.go+20
@@ -500,6 +500,26 @@ func TestListSelection(t *testing.T) {
500500 assert.Equal(t, items[1].ID(), l.selectedItem)
501501 golden.RequireEqual(t, []byte(l.View()))
502502 })
503+ t.Run("should skip none selectable items in the middle", func(t *testing.T) {
504+ t.Parallel()
505+ l := New(WithDirection(Forward)).(*list)
506+ l.SetSize(100, 10)
507+ items := []Item{}
508+ item := NewSelectsableItem("Item initial")
509+ items = append(items, item)
510+ items = append(items, NewSimpleItem("None Selectable"))
511+ for i := range 5 {
512+ item := NewSelectsableItem(fmt.Sprintf("Item %d", i))
513+ items = append(items, item)
514+ }
515+ cmd := l.SetItems(items)
516+ if cmd != nil {
517+ cmd()
518+ }
519+ l.SelectItemBelow()
520+ assert.Equal(t, items[2].ID(), l.selectedItem)
521+ golden.RequireEqual(t, []byte(l.View()))
522+ })
503523}
504524
505525type SelectableItem interface {
internal/tui/exp/list/testdata/TestListSelection/should_skip_none_selectable_items_in_the_middle.goldennew file+7
@@ -0,0 +1,7 @@
1+Item initial
2+None Selectable
3+│Item 0
4+Item 1
5+Item 2
6+Item 3
7+Item 4