Files
t5de-proxy/internal/products/chat_test.go
T
2026-10-29 02:49:10 -07:00

47 lines
1.5 KiB
Go

package products
import (
"fmt"
"testing"
)
func community(id int64) bool { return id >= 2000000000 }
func TestStripCommand(t *testing.T) {
for _, c := range []struct {
in, out string
empty, outfit bool
products string
}{
{"*use 80 123 2000000001 456", "*use 80 123 456", false, true, "[2000000001]"},
{"*use 2000000001", "*use", true, false, "[2000000001]"},
{"*putOnOutfit 5 2000000002 2000000003", "*putOnOutfit 5", false, false, "[2000000002 2000000003]"},
{"*remove 2000000001", "*remove", true, false, "[2000000001]"},
{"*use 80 123", "*use 80 123", false, true, "[]"},
{"hello 2000000001", "hello 2000000001", false, false, "[]"},
{"*imvu:setRoomState c...", "*imvu:setRoomState c...", false, false, "[]"},
} {
r := stripCommand(c.in, community)
if r.text != c.out || r.empty != c.empty || r.outfit != c.outfit || fmt.Sprint(r.products) != c.products {
t.Errorf("%q: got %+v", c.in, r)
}
if r.changed != (len(r.products) > 0) {
t.Errorf("%q: changed %v", c.in, r.changed)
}
}
}
func TestChatMessage(t *testing.T) {
m, ok := parseChatMessage([]byte(`{"to": 0, "message": "*use 80 2000000001", "userId": 392, "chatId": 77}`))
if !ok || m.text != "*use 80 2000000001" || m.userID != 392 {
t.Fatalf("%+v %v", m, ok)
}
out := string(m.withText("*use 80"))
if out != `{"chatId":77,"message":"*use 80","to":0,"userId":392}` {
t.Fatal(out)
}
if _, ok := parseChatMessage([]byte(`not json`)); ok {
t.Fatal("parsed non-JSON")
}
}