on main help sign in
chore: test selection
966d24dKujtim Hoxha
internal/tui/exp/list/list_test.go+20
@@ -500,6 +500,26 @@ func TestListSelection(t *testing.T) {
500 assert.Equal(t, items[1].ID(), l.selectedItem)
500 assert.Equal(t, items[1].ID(), l.selectedItem)
501 golden.RequireEqual(t, []byte(l.View()))
501 golden.RequireEqual(t, []byte(l.View()))
502 })
502 })
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+ })
503}
523}
504
524
505type SelectableItem interface {
525type 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