owpengram-server/internal/rpc/moderation_flags_projection_test.go
2026-07-24 11:56:59 +08:00

71 lines
1.9 KiB
Go

package rpc
import (
"testing"
"github.com/iamxvbaba/td/bin"
"github.com/iamxvbaba/td/tg"
"telesrv/internal/domain"
)
func TestModerationFlagsProjectToSelfUserAndWire(t *testing.T) {
for _, test := range []struct {
name string
user domain.User
scam bool
fake bool
}{
{name: "scam", user: domain.User{ID: 1, Scam: true}, scam: true},
{name: "fake", user: domain.User{ID: 2, Fake: true}, fake: true},
} {
t.Run(test.name, func(t *testing.T) {
projected := tgSelfUser(test.user)
if projected.Scam != test.scam || projected.Fake != test.fake ||
!projected.Self {
t.Fatalf("projected self=%+v", projected)
}
var wire bin.Buffer
if err := projected.Encode(&wire); err != nil {
t.Fatal(err)
}
var decoded tg.User
input := bin.Buffer{Buf: append([]byte(nil), wire.Buf...)}
if err := decoded.Decode(&input); err != nil {
t.Fatal(err)
}
if decoded.Scam != test.scam || decoded.Fake != test.fake ||
!decoded.Self {
t.Fatalf("decoded self=%+v", decoded)
}
})
}
}
func TestModerationFlagsProjectToChannelWithoutMutatingAbout(t *testing.T) {
channel := domain.Channel{
ID: 10, AccessHash: 20, CreatorUserID: 1,
Title: "Reported channel", About: "Owner description",
Broadcast: true, Scam: true,
}
projected := tgChannel(2, channel, nil)
if !projected.Scam || projected.Fake {
t.Fatalf("projected channel=%+v", projected)
}
var wire bin.Buffer
if err := projected.Encode(&wire); err != nil {
t.Fatal(err)
}
var decoded tg.Channel
input := bin.Buffer{Buf: append([]byte(nil), wire.Buf...)}
if err := decoded.Decode(&input); err != nil {
t.Fatal(err)
}
if !decoded.Scam || decoded.Fake {
t.Fatalf("decoded channel=%+v", decoded)
}
full := tgChannelFull(domain.ChannelView{Channel: channel})
if full.About != channel.About {
t.Fatalf("about=%q, want unmodified %q", full.About, channel.About)
}
}