1package modes
2
3import (
4 "strings"
5 "testing"
6
7 "github.com/patriceckhart/zot/packages/tui"
8)
9
10func TestHelpShowsLlamaOnlyWhenConfigured(t *testing.T) {
11 without := strings.Join(renderHelpBlock(tui.Theme{}, 80, false, true, nil), "\n")
12 if strings.Contains(without, "/llama") {
13 t.Fatalf("help exposed /llama without login: %q", without)
14 }
15 with := strings.Join(renderHelpBlock(tui.Theme{}, 80, true, true, nil), "\n")
16 if !strings.Contains(with, "/llama") {
17 t.Fatalf("help omitted /llama with login: %q", with)
18 }
19}
20
21func TestHelpHidesNewWhenSessionsAreDisabled(t *testing.T) {
22 without := strings.Join(renderHelpBlock(tui.Theme{}, 80, false, false, nil), "\n")
23 if strings.Contains(without, "/new") {
24 t.Fatalf("help exposed /new with sessions disabled: %q", without)
25 }
26 with := strings.Join(renderHelpBlock(tui.Theme{}, 80, false, true, nil), "\n")
27 if !strings.Contains(with, "/new") {
28 t.Fatalf("help omitted /new with sessions enabled: %q", with)
29 }
30}
31
32func TestHelpShowsConfiguredCustomKeys(t *testing.T) {
33 bindings, issues := compileKeymap(map[string]string{
34 "Ctrl+S": "/skill:review",
35 "bogus": "/help",
36 })
37 if len(issues) != 1 {
38 t.Fatalf("compileKeymap issues = %v, want one for bogus", issues)
39 }
40 help := strings.Join(renderHelpBlock(tui.Theme{}, 80, false, true, bindings), "\n")
41 if !strings.Contains(help, "custom keys:") || !strings.Contains(help, "ctrl+s") || !strings.Contains(help, "/skill:review") {
42 t.Fatalf("help omitted configured custom key: %q", help)
43 }
44 if strings.Contains(help, "bogus") {
45 t.Fatalf("help advertised an invalid binding: %q", help)
46 }
47}