2026-05-16 04:09:08 +08:00

105 lines
3.1 KiB
Go

package voiceroomrocket
import (
"context"
"testing"
"time"
"chatapp3-golang/internal/integration"
"chatapp3-golang/internal/model"
)
func TestRankRecordsIncludesLocalUserAvatar(t *testing.T) {
service, db := newTestService(t)
ctx := context.Background()
if err := db.AutoMigrate(&model.UserBaseInfo{}); err != nil {
t.Fatalf("migrate user_base_info: %v", err)
}
service.userProfiles = &fakeRocketGateway{profiles: map[int64]integration.UserProfile{
1001: {
ID: integration.Int64Value(1001),
Account: "java-account",
UserNickname: "java-name",
CountryCode: "SA",
},
}}
if err := db.Create(&model.UserBaseInfo{
ID: 1001,
Account: "223456",
UserAvatar: "https://cdn.example.com/avatar-1001.png",
UserNickname: "Rocket King",
CountryCode: "KSA",
CountryName: "Saudi Arabia",
CreateTime: time.Now(),
}).Error; err != nil {
t.Fatalf("create user_base_info: %v", err)
}
if err := db.Create(&model.VoiceRoomRocketContribution{
SysOrigin: "LIKEI",
RoomID: 9001,
DayKey: "20260516",
RoundNo: 1,
Level: 2,
UserID: 1001,
ScoreEnergy: 500,
FirstContributeTime: time.Now(),
LastContributeTime: time.Now(),
CreateTime: time.Now(),
UpdateTime: time.Now(),
}).Error; err != nil {
t.Fatalf("create contribution: %v", err)
}
records, err := service.rankRecords(ctx, "LIKEI", 9001, "20260516", 1, 2, 1, 10)
if err != nil {
t.Fatalf("rankRecords error = %v", err)
}
if len(records) != 1 {
t.Fatalf("records len = %d, want 1", len(records))
}
if records[0].UserAvatar != "https://cdn.example.com/avatar-1001.png" {
t.Fatalf("userAvatar = %q, want local avatar", records[0].UserAvatar)
}
if records[0].UserNickname != "Rocket King" {
t.Fatalf("userNickname = %q, want local nickname", records[0].UserNickname)
}
}
func TestMapUserProfilesFillsMissingLocalAvatarFromJava(t *testing.T) {
service, db := newTestService(t)
ctx := context.Background()
if err := db.AutoMigrate(&model.UserBaseInfo{}); err != nil {
t.Fatalf("migrate user_base_info: %v", err)
}
service.userProfiles = &fakeRocketGateway{profiles: map[int64]integration.UserProfile{
1002: {
ID: integration.Int64Value(1002),
Account: "java-1002",
UserAvatar: "https://cdn.example.com/java-avatar-1002.png",
UserNickname: "Java Name",
CountryCode: "SA",
},
}}
if err := db.Create(&model.UserBaseInfo{
ID: 1002,
Account: "local-1002",
UserNickname: "Local Name",
CreateTime: time.Now(),
}).Error; err != nil {
t.Fatalf("create user_base_info: %v", err)
}
profiles := service.mapUserProfiles(ctx, []int64{1002})
profile := profiles[1002]
if profile.UserAvatar != "https://cdn.example.com/java-avatar-1002.png" {
t.Fatalf("userAvatar = %q, want java avatar", profile.UserAvatar)
}
if profile.Account != "local-1002" {
t.Fatalf("account = %q, want local account", profile.Account)
}
if profile.UserNickname != "Local Name" {
t.Fatalf("userNickname = %q, want local nickname", profile.UserNickname)
}
}