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

163 lines
3.7 KiB
Go

package peers
import (
"context"
"testing"
"github.com/stretchr/testify/require"
"go.mau.fi/mautrix-telegram/pkg/gotd/tg"
)
func TestChatGetters(t *testing.T) {
a := require.New(t)
u := Chat{
raw: &tg.Chat{
Creator: true,
Left: true,
Deactivated: true,
CallActive: true,
CallNotEmpty: true,
Noforwards: true,
ID: 10,
Title: "Title",
ParticipantsCount: 10,
Date: 10,
Version: 1,
AdminRights: tg.ChatAdminRights{AddAdmins: true},
DefaultBannedRights: tg.ChatBannedRights{EmbedLinks: true},
},
}
u.raw.SetFlags()
a.Equal(u.raw, u.Raw())
a.True(u.TDLibPeerID().IsChat())
a.Equal("Title", u.VisibleName())
a.Equal(&tg.InputPeerChat{ChatID: u.raw.ID}, u.InputPeer())
a.False(u.Verified())
a.False(u.Scam())
a.False(u.Fake())
a.Equal(u.raw.GetID(), u.ID())
a.Equal(u.raw.Creator, u.Creator())
a.Equal(u.raw.Left, u.Left())
a.Equal(u.raw.Deactivated, u.Deactivated())
a.Equal(u.raw.CallActive, u.CallActive())
a.Equal(u.raw.CallNotEmpty, u.CallNotEmpty())
a.Equal(u.raw.Noforwards, u.NoForwards())
{
_, ok := u.ToSupergroup()
a.False(ok)
}
{
_, ok := u.ToBroadcast()
a.False(ok)
}
}
func TestChat_Leave(t *testing.T) {
a := require.New(t)
ctx := context.Background()
mock, m := testManager(t)
ch := m.Chat(getTestChat())
mock.ExpectCall(&tg.MessagesDeleteChatUserRequest{
RevokeHistory: false,
ChatID: ch.ID(),
UserID: &tg.InputUserSelf{},
}).ThenRPCErr(getTestError())
a.Error(ch.Leave(ctx))
mock.ExpectCall(&tg.MessagesDeleteChatUserRequest{
RevokeHistory: false,
ChatID: ch.ID(),
UserID: &tg.InputUserSelf{},
}).ThenResult(&tg.Updates{})
a.NoError(ch.Leave(ctx))
}
func TestChat_SetTitle(t *testing.T) {
a := require.New(t)
ctx := context.Background()
mock, m := testManager(t)
title := "title"
ch := m.Chat(getTestChat())
mock.ExpectCall(&tg.MessagesEditChatTitleRequest{
ChatID: ch.ID(),
Title: title,
}).ThenRPCErr(getTestError())
a.Error(ch.SetTitle(ctx, title))
mock.ExpectCall(&tg.MessagesEditChatTitleRequest{
ChatID: ch.ID(),
Title: title,
}).ThenResult(&tg.Updates{})
a.NoError(ch.SetTitle(ctx, title))
}
func TestChat_SetDescription(t *testing.T) {
a := require.New(t)
ctx := context.Background()
mock, m := testManager(t)
about := "about"
ch := m.Chat(getTestChat())
mock.ExpectCall(&tg.MessagesEditChatAboutRequest{
Peer: ch.InputPeer(),
About: about,
}).ThenRPCErr(getTestError())
a.Error(ch.SetDescription(ctx, about))
mock.ExpectCall(&tg.MessagesEditChatAboutRequest{
Peer: ch.InputPeer(),
About: about,
}).ThenTrue()
a.NoError(ch.SetDescription(ctx, about))
}
func TestChat_LeaveAndDelete(t *testing.T) {
a := require.New(t)
ctx := context.Background()
mock, m := testManager(t)
ch := m.Chat(getTestChat())
mock.ExpectCall(&tg.MessagesDeleteChatUserRequest{
RevokeHistory: true,
ChatID: ch.ID(),
UserID: &tg.InputUserSelf{},
}).ThenRPCErr(getTestError())
a.Error(ch.LeaveAndDelete(ctx))
mock.ExpectCall(&tg.MessagesDeleteChatUserRequest{
RevokeHistory: true,
ChatID: ch.ID(),
UserID: &tg.InputUserSelf{},
}).ThenResult(&tg.Updates{})
a.NoError(ch.LeaveAndDelete(ctx))
}
func TestChat_ActualChat(t *testing.T) {
a := require.New(t)
ctx := context.Background()
_, m := testManager(t)
ch := m.Chat(getTestChat())
_, ok, err := ch.ActualChat(ctx)
a.NoError(err)
a.False(ok)
newChat := m.Channel(getTestChannel())
a.NoError(m.applyChats(ctx, newChat.raw))
ch.raw.SetMigratedTo(newChat.InputChannel())
actual, ok, err := ch.ActualChat(ctx)
a.NoError(err)
a.True(ok)
a.Equal(newChat.ID(), actual.ID())
}