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) } }