Archived
For developers new to submodules (notes/usability-plan.md, D32): - x and X read "restore to pin" and "restore committed pins" - problems only, filter and fetch are shown in the footer - ? shows every key in titled columns, then a legend of the status words, symbols and spine roles; esc closes it - u reads "pull (fast-forward)" on the superproject - the detail pane suggests f when the last fetch is old - a hint above the footer until the first key - the header says "staged", like the tree Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package detail
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/charmbracelet/bubbles/key"
|
|
"github.com/charmbracelet/lipgloss"
|
|
|
|
"submarine/internal/tui/theme"
|
|
)
|
|
|
|
func TestPaletteWrapsInsteadOfCuttingKeys(t *testing.T) {
|
|
keys := []key.Binding{
|
|
key.NewBinding(key.WithKeys("c"), key.WithHelp("c", "copy path")),
|
|
key.NewBinding(key.WithKeys("u"), key.WithHelp("u", "update pin")),
|
|
key.NewBinding(key.WithKeys("b"), key.WithHelp("b", "switch branch")),
|
|
key.NewBinding(key.WithKeys("x"), key.WithHelp("x", "restore to pin")),
|
|
}
|
|
m := New(theme.Default(), keys)
|
|
m.SetSize(36, 20)
|
|
lines := m.palette()
|
|
if len(lines) != 2 {
|
|
t.Fatalf("want 2 lines, got %q", lines)
|
|
}
|
|
all := strings.Join(lines, "\n")
|
|
for _, want := range []string{"copy path", "update pin", "switch branch", "x restore to pin"} {
|
|
if !strings.Contains(all, want) {
|
|
t.Errorf("palette lacks %q: %q", want, lines)
|
|
}
|
|
}
|
|
for _, l := range lines {
|
|
if w := lipgloss.Width(l); w > 36 {
|
|
t.Errorf("line %q is %d wide", l, w)
|
|
}
|
|
}
|
|
m.SetSize(120, 20)
|
|
if lines := m.palette(); len(lines) != 1 {
|
|
t.Errorf("wide pane: want 1 line, got %q", lines)
|
|
}
|
|
}
|