Files
bubbles/key/key_test.go
T

70 lines
1.3 KiB
Go

package key
import (
"testing"
tea "github.com/charmbracelet/bubbletea/v2"
)
func TestBinding_Enabled(t *testing.T) {
binding := NewBinding(
WithKeys("k", "up"),
WithHelp("↑/k", "move up"),
)
if !binding.Enabled() {
t.Errorf("expected key to be Enabled")
}
binding.SetEnabled(false)
if binding.Enabled() {
t.Errorf("expected key not to be Enabled")
}
binding.SetEnabled(true)
binding.Unbind()
if binding.Enabled() {
t.Errorf("expected key not to be Enabled")
}
}
func TestMatches(t *testing.T) {
cases := []struct {
key tea.KeyMsg
bindings []Binding
}{
{
key: tea.KeyPressMsg{Code: 'k', Text: "k"},
bindings: []Binding{
NewBinding(
WithKeys("k", "up"),
WithHelp("↑/k", "move up"),
),
},
},
{
key: tea.KeyPressMsg{Code: '/', Mod: tea.ModShift, Text: "?"},
bindings: []Binding{
NewBinding(
WithKeys("?"),
WithHelp("?", "search"),
),
},
},
{
key: tea.KeyPressMsg{Code: 'a', Mod: tea.ModCtrl},
bindings: []Binding{
NewBinding(
WithKeys("ctrl+a"),
WithHelp("ctrl+a", "select all"),
),
},
},
}
for i, c := range cases {
if !Matches(c.key, c.bindings...) {
t.Errorf("case %d: expected key (%q) to match binding(s)", i+1, c.key.String())
}
}
}