owpengram-server/internal/store/postgres/channel_member_pairs_integration_test.go
2026-09-01 12:06:31 +03:00

64 lines
2.1 KiB
Go

package postgres
import (
"context"
"testing"
"telesrv/internal/domain"
)
func TestFilterActiveChannelMemberPairsPostgresKeepsExactEdges(t *testing.T) {
pool := testPool(t)
ctx := context.Background()
suffix := randomSuffix(t)
users := NewUserStore(pool)
owner := createTestUser(t, ctx, users, "+1911"+suffix+"01", "Pair", "Owner")
memberA := createTestUser(t, ctx, users, "+1911"+suffix+"02", "Pair", "A")
memberB := createTestUser(t, ctx, users, "+1911"+suffix+"03", "Pair", "B")
userIDs := []int64{owner.ID, memberA.ID, memberB.ID}
var channelIDs []int64
t.Cleanup(func() {
if len(channelIDs) > 0 {
_, _ = pool.Exec(ctx, "DELETE FROM channels WHERE id = ANY($1::bigint[])", channelIDs)
}
_, _ = pool.Exec(ctx, "DELETE FROM users WHERE id = ANY($1::bigint[])", userIDs)
})
channels := NewChannelStore(pool)
first, err := channels.CreateChannel(ctx, domain.CreateChannelRequest{
CreatorUserID: owner.ID,
MemberUserIDs: []int64{memberA.ID, memberB.ID},
Title: "pair first " + suffix,
Megagroup: true,
Date: 1700000000,
})
if err != nil {
t.Fatalf("CreateChannel(first): %v", err)
}
channelIDs = append(channelIDs, first.Channel.ID)
second, err := channels.CreateChannel(ctx, domain.CreateChannelRequest{
CreatorUserID: owner.ID,
MemberUserIDs: []int64{memberA.ID, memberB.ID},
Title: "pair second " + suffix,
Megagroup: true,
Date: 1700000001,
})
if err != nil {
t.Fatalf("CreateChannel(second): %v", err)
}
channelIDs = append(channelIDs, second.Channel.ID)
got, err := channels.FilterActiveChannelMemberPairs(ctx, map[int64][]int64{
first.Channel.ID: {memberA.ID},
second.Channel.ID: {memberB.ID},
})
if err != nil {
t.Fatalf("FilterActiveChannelMemberPairs: %v", err)
}
if len(got[first.Channel.ID]) != 1 || got[first.Channel.ID][0] != memberA.ID {
t.Fatalf("first channel result = %+v, want [%d]", got[first.Channel.ID], memberA.ID)
}
if len(got[second.Channel.ID]) != 1 || got[second.Channel.ID][0] != memberB.ID {
t.Fatalf("second channel result = %+v, want [%d]", got[second.Channel.ID], memberB.ID)
}
}