1
bot/models/boost_test.go
negasus 95b8f8c9f2 add Marshal functions for struct with many types
- ChatBoostSource
- ChatBackground
- ChatMember
- MenuButton
- MaybeInaccessibleMessage
- ReactionType
- MessageOrigin
2024-05-22 17:14:55 +03:00

118 lines
2.3 KiB
Go

package models
import (
"encoding/json"
"testing"
)
func TestChatBoostSource_premium(t *testing.T) {
src := `{"source":"premium","user":{"id":123}}`
var cbs ChatBoostSource
err := json.Unmarshal([]byte(src), &cbs)
if err != nil {
t.Fatal(err)
}
if cbs.Source != ChatBoostSourceTypePremium {
t.Fatal("invalid type")
}
if cbs.ChatBoostSourcePremium == nil {
t.Fatal("invalid ChatBoostSourcePremium")
}
if cbs.ChatBoostSourcePremium.User.ID != 123 {
t.Fatal("invalid user id")
}
}
func TestChatBoostSource_gift_code(t *testing.T) {
src := `{"source":"gift_code","user":{"id":123}}`
var cbs ChatBoostSource
err := json.Unmarshal([]byte(src), &cbs)
if err != nil {
t.Fatal(err)
}
if cbs.Source != ChatBoostSourceTypeGiftCode {
t.Fatal("invalid type")
}
if cbs.ChatBoostSourceGiftCode == nil {
t.Fatal("invalid ChatBoostSourceGiftCode")
}
if cbs.ChatBoostSourceGiftCode.User.ID != 123 {
t.Fatal("invalid user id")
}
}
func TestChatBoostSource_giveaway(t *testing.T) {
src := `{"source":"giveaway","user":{"id":123}}`
var cbs ChatBoostSource
err := json.Unmarshal([]byte(src), &cbs)
if err != nil {
t.Fatal(err)
}
if cbs.Source != ChatBoostSourceTypeGiveaway {
t.Fatal("invalid type")
}
if cbs.ChatBoostSourceGiveaway == nil {
t.Fatal("invalid ChatBoostSourceGiveaway")
}
if cbs.ChatBoostSourceGiveaway.User.ID != 123 {
t.Fatal("invalid user id")
}
}
func TestChatBoostSource_premium_marshal_unmarshal(t *testing.T) {
src := `{"source":"premium","user":{"id":123}}`
cbs := &ChatBoostSource{}
err := json.Unmarshal([]byte(src), cbs)
if err != nil {
t.Fatal(err)
}
if cbs.Source != ChatBoostSourceTypePremium {
t.Fatal("invalid type")
}
if cbs.ChatBoostSourcePremium == nil {
t.Fatal("invalid ChatBoostSourcePremium")
}
if cbs.ChatBoostSourcePremium.User.ID != 123 {
t.Fatal("invalid user id")
}
src2, err2 := json.Marshal(cbs)
if err2 != nil {
t.Fatal(err2)
}
var cbs2 ChatBoostSource
err = json.Unmarshal(src2, &cbs2)
if err != nil {
t.Fatal(err)
}
if cbs2.Source != ChatBoostSourceTypePremium {
t.Fatal("invalid type")
}
if cbs2.ChatBoostSourcePremium == nil {
t.Fatal("invalid ChatBoostSourcePremium")
}
if cbs2.ChatBoostSourcePremium.User.ID != 123 {
t.Fatal("invalid user id")
}
}