Files
mautrix-telegram/pkg/gotd/telegram/peers/multichat_test.go
T
2025-06-27 20:03:37 -07:00

77 lines
1.8 KiB
Go

package peers
import (
"context"
"testing"
"github.com/stretchr/testify/require"
"go.mau.fi/mautrix-telegram/pkg/gotd/tg"
"go.mau.fi/mautrix-telegram/pkg/gotd/tgmock"
)
type multiChat interface {
Peer
Creator() bool
Left() bool
NoForwards() bool
CallActive() bool
CallNotEmpty() bool
ParticipantsCount() int
AdminRights() (tg.ChatAdminRights, bool)
DefaultBannedRights() (tg.ChatBannedRights, bool)
Leave(ctx context.Context) error
SetTitle(ctx context.Context, title string) error
SetDescription(ctx context.Context, about string) error
InviteLinks() InviteLinks
ToBroadcast() (Broadcast, bool)
IsBroadcast() bool
ToSupergroup() (Supergroup, bool)
IsSupergroup() bool
SetReactions(ctx context.Context, r ...tg.ReactionClass) error
DisableReactions(ctx context.Context) error
}
var _ = []multiChat{
Chat{},
Channel{},
}
func TestReactions(t *testing.T) {
a := require.New(t)
ctx := context.Background()
mock, m := testManager(t)
req := func(p Peer, r ...tg.ReactionClass) *tgmock.RequestBuilder {
var reactions tg.ChatReactionsClass = &tg.ChatReactionsSome{Reactions: r}
if len(r) == 0 {
reactions = &tg.ChatReactionsNone{}
}
return mock.ExpectCall(&tg.MessagesSetChatAvailableReactionsRequest{
Peer: p.InputPeer(),
AvailableReactions: reactions,
})
}
reactions := []tg.ReactionClass{
&tg.ReactionEmoji{Emoticon: "👍"},
&tg.ReactionEmoji{Emoticon: "A"},
}
for _, p := range []multiChat{
m.Chat(getTestChat()),
m.Channel(getTestChannel()),
} {
req(p, reactions...).ThenRPCErr(getTestError())
a.Error(p.SetReactions(ctx, reactions...))
req(p, reactions...).ThenResult(&tg.Updates{})
a.NoError(p.SetReactions(ctx, reactions...))
req(p).ThenRPCErr(getTestError())
a.Error(p.DisableReactions(ctx))
req(p).ThenResult(&tg.Updates{})
a.NoError(p.DisableReactions(ctx))
}
}