105 lines
3.1 KiB
Go
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)
|
|
}
|
|
}
|