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