summaryrefslogtreecommitdiff
path: root/cmd/hexai-tmux-edit/main_test.go
blob: fc2364c88455454953e2b144aa77ab148c6b65d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package main

import (
	"errors"
	"testing"

	"codeberg.org/snonux/hexai/internal/tmuxedit"
)

func TestBuildOptions_AllEmpty(t *testing.T) {
	opts := buildOptions("", "", "")
	if opts.ConfigPath != "" || opts.Agent != "" || opts.Pane != "" {
		t.Fatalf("expected all empty, got %+v", opts)
	}
}

func TestBuildOptions_TrimsWhitespace(t *testing.T) {
	opts := buildOptions("  /tmp/cfg.toml  ", "  claude  ", "  %5  ")
	if opts.ConfigPath != "/tmp/cfg.toml" {
		t.Fatalf("expected trimmed config path, got %q", opts.ConfigPath)
	}
	if opts.Agent != "claude" {
		t.Fatalf("expected trimmed agent, got %q", opts.Agent)
	}
	if opts.Pane != "%5" {
		t.Fatalf("expected trimmed pane, got %q", opts.Pane)
	}
}

func TestRunTmuxEdit_Success(t *testing.T) {
	old := runTmuxEdit
	t.Cleanup(func() { runTmuxEdit = old })

	var gotOpts tmuxedit.Options
	runTmuxEdit = func(opts tmuxedit.Options) error {
		gotOpts = opts
		return nil
	}

	opts := buildOptions("/tmp/cfg.toml", "cursor", "%3")
	if err := runTmuxEdit(opts); err != nil {
		t.Fatalf("runTmuxEdit: %v", err)
	}
	if gotOpts.ConfigPath != "/tmp/cfg.toml" || gotOpts.Agent != "cursor" || gotOpts.Pane != "%3" {
		t.Fatalf("unexpected opts: %+v", gotOpts)
	}
}

func TestRunTmuxEdit_Error(t *testing.T) {
	old := runTmuxEdit
	t.Cleanup(func() { runTmuxEdit = old })

	wantErr := errors.New("tmux not found")
	runTmuxEdit = func(_ tmuxedit.Options) error { return wantErr }

	if err := runTmuxEdit(tmuxedit.Options{}); !errors.Is(err, wantErr) {
		t.Fatalf("expected error, got: %v", err)
	}
}