ScuttleBot

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

Keyboard Shortcuts

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