ScuttleBot

scuttlebot / internal / bots / scroll / scroll_test.go
Blame History Raw 60 lines
1
package scroll_test
2
3
import (
4
"strings"
5
"testing"
6
7
"github.com/conflicthq/scuttlebot/internal/bots/scroll"
8
)
9
10
func TestParseCommand(t *testing.T) {
11
cases := []struct {
12
name string
13
input string
14
wantCh string
15
wantLim int
16
wantErr bool
17
}{
18
{"basic", "replay #fleet", "#fleet", 50, false},
19
{"with last", "replay #fleet last=100", "#fleet", 100, false},
20
{"last capped at max", "replay #fleet last=9999", "#fleet", 500, false},
21
{"missing channel", "replay", "", 0, true},
22
{"no hash", "replay fleet", "", 0, true},
23
{"unknown command", "history #fleet", "", 0, true},
24
{"invalid last", "replay #fleet last=abc", "", 0, true},
25
{"unknown arg", "replay #fleet foo=bar", "", 0, true},
26
}
27
28
for _, tc := range cases {
29
t.Run(tc.name, func(t *testing.T) {
30
req, err := scroll.ParseCommand(tc.input)
31
if tc.wantErr {
32
if err == nil {
33
t.Errorf("ParseCommand(%q): expected error, got nil", tc.input)
34
}
35
return
36
}
37
if err != nil {
38
t.Fatalf("ParseCommand(%q): unexpected error: %v", tc.input, err)
39
}
40
if req.Channel != tc.wantCh {
41
t.Errorf("Channel: got %q, want %q", req.Channel, tc.wantCh)
42
}
43
if req.Limit != tc.wantLim {
44
t.Errorf("Limit: got %d, want %d", req.Limit, tc.wantLim)
45
}
46
})
47
}
48
}
49
50
func TestParseCommandCaseInsensitive(t *testing.T) {
51
req, err := scroll.ParseCommand("REPLAY #fleet last=10")
52
if err != nil {
53
t.Fatalf("ParseCommand: %v", err)
54
}
55
if req.Channel != "#fleet" {
56
t.Errorf("Channel: got %q", req.Channel)
57
}
58
_ = strings.ToLower // just confirming case insensitivity is tested
59
}
60

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button