kaiyan/ingest/message_test.go
2025-04-06 09:20:32 -04:00

61 lines
1.4 KiB
Go

package ingest_test
import (
_ "embed"
"testing"
"github.com/go-json-experiment/json"
"github.com/google/go-cmp/cmp"
"git.sunturtle.xyz/zephyr/kaiyan/ingest"
"git.sunturtle.xyz/zephyr/kaiyan/twitch"
)
func TestTwitchDecode(t *testing.T) {
cases := []struct {
name string
json string
want ingest.Twitch
}{
{
name: "message",
json: twitchMessage,
want: ingest.Twitch{
Broadcaster: "1971641",
Chatter: "4145994",
ID: "cc106a89-1814-919d-454c-f4f2f970aae7",
Message: ingest.TwitchContent{Text: "Hi chat"},
},
},
{
name: "shared",
json: twitchMessageShared,
want: ingest.Twitch{
Broadcaster: "1971641",
Chatter: "4145994",
ID: "cc106a89-1814-919d-454c-f4f2f970aae7",
Message: ingest.TwitchContent{Text: "Hi chat"},
SourceBroadcaster: "112233",
},
},
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
var got twitch.EventSub[ingest.Twitch]
err := json.Unmarshal([]byte(c.json), &got)
if err != nil {
t.Errorf("couldn't decode message: %v", err)
}
if diff := cmp.Diff(c.want, got.Event); diff != "" {
t.Errorf("wrong result (-want/+got):\n%s", diff)
}
})
}
}
//go:embed testdata/twitch-message.json
var twitchMessage string
//go:embed testdata/twitch-message-shared.json
var twitchMessageShared string