merged from gramsrv upstream
This commit is contained in:
parent
79c64ee916
commit
21a0856587
651 changed files with 54774 additions and 4590 deletions
|
|
@ -0,0 +1,64 @@
|
|||
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)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue