41 lines
1.3 KiB
Go
41 lines
1.3 KiB
Go
package rpc
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/iamxvbaba/td/clock"
|
|
"go.uber.org/zap/zaptest"
|
|
|
|
"telesrv/internal/domain"
|
|
)
|
|
|
|
type recordingUserProjectionFactInvalidator struct {
|
|
freezes []int64
|
|
phones []int64
|
|
}
|
|
|
|
func (r *recordingUserProjectionFactInvalidator) InvalidateAccountFreezeFact(userID int64) {
|
|
r.freezes = append(r.freezes, userID)
|
|
}
|
|
|
|
func (r *recordingUserProjectionFactInvalidator) InvalidateCollectiblePhoneFact(userID int64) {
|
|
r.phones = append(r.phones, userID)
|
|
}
|
|
|
|
func TestAdminUserFactHooksInvalidateBeforeProjectionRefresh(t *testing.T) {
|
|
facts := &recordingUserProjectionFactInvalidator{}
|
|
router := New(Config{}, Deps{UserProjectionFacts: facts}, zaptest.NewLogger(t), clock.System)
|
|
if err := router.NotifyAccountFreezeChanged(context.Background(), domain.AccountFreeze{UserID: 77, Frozen: true}); err != nil {
|
|
t.Fatalf("NotifyAccountFreezeChanged: %v", err)
|
|
}
|
|
if err := router.NotifyUserChanged(context.Background(), domain.User{ID: 88}); err != nil {
|
|
t.Fatalf("NotifyUserChanged: %v", err)
|
|
}
|
|
if len(facts.freezes) != 1 || facts.freezes[0] != 77 {
|
|
t.Fatalf("freeze invalidations = %v, want [77]", facts.freezes)
|
|
}
|
|
if len(facts.phones) != 1 || facts.phones[0] != 88 {
|
|
t.Fatalf("phone invalidations = %v, want [88]", facts.phones)
|
|
}
|
|
}
|