diff --git a/api/integration_test.go b/api/integration_test.go index d319846..5bbe68c 100644 --- a/api/integration_test.go +++ b/api/integration_test.go @@ -24,10 +24,34 @@ func TestIntegration(t *testing.T) { log.Println("API user:", u.Username) // POST with URL param and paginator - _, err = client.Guilds(100) + guilds, err := client.Guilds(100) if err != nil { t.Fatal("Can't get guilds:", err) } + + for _, guild := range guilds { + if !guild.ID.IsValid() { + t.Errorf("guild %q has invalid ID", guild.Name) + continue + } + + channels, err := client.Channels(guild.ID) + if err != nil { + t.Errorf( + "failed to fetch channels for guild %q (%v): %v", + guild.Name, guild.ID, err, + ) + } + + for _, ch := range channels { + if !ch.ID.IsValid() { + t.Errorf( + "channel %q of guild %q (%v) has invalid ID", + ch.Name, guild.Name, guild.ID, + ) + } + } + } } var emojisToSend = [...]discord.APIEmoji{ diff --git a/discord/channel.go b/discord/channel.go index 9f63bc1..ef22ee8 100644 --- a/discord/channel.go +++ b/discord/channel.go @@ -71,9 +71,7 @@ type Channel struct { func (ch *Channel) UnmarshalJSON(data []byte) error { type RawChannel Channel - - var newCh RawChannel - if err := json.Unmarshal(data, &newCh); err != nil { + if err := json.Unmarshal(data, (*RawChannel)(ch)); err != nil { return err }