owpengram-server/internal/rpc/convert_updates_pin_service_test.go

65 lines
2.1 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package rpc
import (
"testing"
"github.com/iamxvbaba/td/tg"
"telesrv/internal/domain"
)
// TestDifferenceNewMessageKeepsPinServiceReply 验证差分输出的 pin 服务
// 消息保留 reply 头reply_to_msg_id = 接收方视角被置顶消息 id缺失
// 时 TDesktop 渲染 "pinned Deleted message"。
func TestDifferenceNewMessageKeepsPinServiceReply(t *testing.T) {
const bobID = int64(1000000042)
const aliceID = int64(1000000041)
event := domain.UpdateEvent{
UserID: bobID,
Type: domain.UpdateEventNewMessage,
Pts: 351,
PtsCount: 1,
Date: 1700000900,
Message: domain.Message{
ID: 117,
OwnerUserID: bobID,
Peer: domain.Peer{Type: domain.PeerTypeUser, ID: aliceID},
From: domain.Peer{Type: domain.PeerTypeUser, ID: aliceID},
Date: 1700000900,
Media: &domain.MessageMedia{
Kind: domain.MessageMediaKindService,
ServiceAction: &domain.MessageServiceAction{Kind: domain.MessageServiceActionPinMessage},
},
ReplyTo: &domain.MessageReply{
MessageID: 115,
Peer: domain.Peer{Type: domain.PeerTypeUser, ID: aliceID},
},
},
}
diff := domain.UpdateDifference{
State: domain.UpdateState{Pts: 351, Date: 1700000901},
Events: []domain.UpdateEvent{event},
}
out, ok := tgUpdatesDifference(bobID, diff).(*tg.UpdatesDifference)
if !ok {
t.Fatalf("difference type = %T, want *tg.UpdatesDifference", tgUpdatesDifference(bobID, diff))
}
if len(out.NewMessages) != 1 {
t.Fatalf("new messages = %d, want 1", len(out.NewMessages))
}
svc, ok := out.NewMessages[0].(*tg.MessageService)
if !ok {
t.Fatalf("message type = %T, want messageService", out.NewMessages[0])
}
if _, ok := svc.Action.(*tg.MessageActionPinMessage); !ok {
t.Fatalf("action = %T, want messageActionPinMessage", svc.Action)
}
reply, ok := svc.GetReplyTo()
if !ok {
t.Fatalf("difference 服务消息丢失 reply 头TDesktop 将渲染 pinned Deleted message")
}
header, ok := reply.(*tg.MessageReplyHeader)
if !ok || header.ReplyToMsgID != 115 {
t.Fatalf("reply header = %+v, want reply_to_msg_id=115", reply)
}
}