fix(rpc): sync preserve complete username projections
This commit is contained in:
parent
464d4edb4a
commit
ee74d941bb
10 changed files with 411 additions and 22 deletions
|
|
@ -2,6 +2,7 @@ package rpc
|
|||
|
||||
import (
|
||||
"context"
|
||||
"reflect"
|
||||
"sync"
|
||||
"testing"
|
||||
"time"
|
||||
|
|
@ -1264,9 +1265,15 @@ func TestBuildOutboxStoryUpdatesHydratesCompanionPeersWithStoriesMaxID(t *testin
|
|||
if _, err := storyStore.UpsertStory(ctx, domain.UpsertStoryRequest{Story: story}); err != nil {
|
||||
t.Fatalf("upsert story: %v", err)
|
||||
}
|
||||
registry := newFakeUsernameRegistry()
|
||||
registry.byPeer[ownerPeer] = []domain.Username{
|
||||
{Username: "story_owner", Editable: true, Active: true, SortOrder: 0},
|
||||
{Username: "story_collectible", Active: true, SortOrder: 1, CollectibleID: 51},
|
||||
}
|
||||
r := New(Config{}, Deps{
|
||||
Users: appusers.NewService(userStore),
|
||||
Stories: appstories.NewService(storyStore),
|
||||
Users: appusers.NewService(userStore),
|
||||
Stories: appstories.NewService(storyStore),
|
||||
Usernames: registry,
|
||||
}, zaptest.NewLogger(t), fixedClock{now: time.Unix(1700000300, 0)})
|
||||
|
||||
updates := r.BuildOutboxUpdates(ctx, []OutboxUpdateRequest{{
|
||||
|
|
@ -1290,7 +1297,16 @@ func TestBuildOutboxStoryUpdatesHydratesCompanionPeersWithStoriesMaxID(t *testin
|
|||
if _, ok := updates[0].Updates[0].(*tg.UpdateStory); !ok {
|
||||
t.Fatalf("first update = %T, want updateStory", updates[0].Updates[0])
|
||||
}
|
||||
assertUserStoryMaxID(t, findUserClass(updates[0].Users, owner.ID), 13)
|
||||
ownerUser := findUserClass(updates[0].Users, owner.ID)
|
||||
assertUserStoryMaxID(t, ownerUser, 13)
|
||||
projectedOwner := ownerUser.(*tg.User)
|
||||
vector, set := projectedOwner.GetUsernames()
|
||||
if !set || !reflect.DeepEqual(usernameStrings(vector), []string{"story_owner", "story_collectible"}) {
|
||||
t.Fatalf("story owner usernames = %v (set %v), want complete vector", usernameStrings(vector), set)
|
||||
}
|
||||
if registry.peerCalls != 1 || registry.batchCalls != 0 {
|
||||
t.Fatalf("username registry reads = peer %d / batch %d, want one claim-wide read", registry.peerCalls, registry.batchCalls)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildOutboxNewStoryReactionHydratesReactorUser(t *testing.T) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue