104 lines
3.3 KiB
Go
104 lines
3.3 KiB
Go
package roomturnoverreward
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"chatapp3-golang/internal/common"
|
|
"chatapp3-golang/internal/integration"
|
|
)
|
|
|
|
func TestGetHomeReturnsUserRoomTurnoverAndExpectedReward(t *testing.T) {
|
|
service, _ := newTestService(t)
|
|
service.repo.Java = stubRoomTurnoverRewardJavaGateway{
|
|
userProfile: integration.UserProfile{
|
|
ID: integration.Int64Value(9001),
|
|
Account: "123456789",
|
|
UserNickname: "Owner",
|
|
UserAvatar: "https://example.com/avatar.png",
|
|
},
|
|
userRoom: integration.RoomProfile{
|
|
ID: integration.Int64Value(101),
|
|
RoomAccount: "R101",
|
|
RoomName: "Owner room",
|
|
RoomCover: "https://example.com/room.png",
|
|
UserID: integration.Int64Value(9001),
|
|
SysOrigin: "LIKEI",
|
|
},
|
|
current: integration.RoomContributionActivityCount{
|
|
RoomID: integration.Int64Value(101),
|
|
ContributionValue: integration.AmountValue(7200000),
|
|
},
|
|
}
|
|
ctx := context.Background()
|
|
if _, err := service.SaveConfig(ctx, SaveRoomTurnoverRewardConfigRequest{
|
|
SysOrigin: "LIKEI",
|
|
Enabled: true,
|
|
Timezone: "Asia/Riyadh",
|
|
LevelConfigs: []RoomTurnoverRewardLevelInput{
|
|
{Level: 1, TurnoverThreshold: 1000000, RewardGold: 1000, Enabled: true},
|
|
{Level: 2, TurnoverThreshold: 7000000, RewardGold: 350000, Enabled: true},
|
|
},
|
|
}); err != nil {
|
|
t.Fatalf("SaveConfig() error = %v", err)
|
|
}
|
|
|
|
resp, err := service.GetHome(ctx, common.AuthUser{UserID: 9001, SysOrigin: "LIKEI"})
|
|
if err != nil {
|
|
t.Fatalf("GetHome() error = %v", err)
|
|
}
|
|
if !resp.HasRoom || resp.RoomID != 101 || resp.UserNickname != "Owner" {
|
|
t.Fatalf("profile fields = %+v", resp)
|
|
}
|
|
if resp.TurnoverAmount != 7200000 || resp.MatchedLevel != 2 || resp.ExpectedRewardGold != 350000 {
|
|
t.Fatalf("reward fields = %+v", resp)
|
|
}
|
|
if len(resp.LevelConfigs) != 2 || resp.HighlightRewardGold != 350000 {
|
|
t.Fatalf("level/highlight fields = %+v", resp)
|
|
}
|
|
}
|
|
|
|
func TestGetHomeReturnsZeroRewardWhenNoRoom(t *testing.T) {
|
|
service, _ := newTestService(t)
|
|
service.repo.Java = stubRoomTurnoverRewardJavaGateway{
|
|
userProfile: integration.UserProfile{
|
|
ID: integration.Int64Value(9001),
|
|
UserNickname: "Owner",
|
|
},
|
|
}
|
|
|
|
resp, err := service.GetHome(context.Background(), common.AuthUser{UserID: 9001, SysOrigin: "LIKEI"})
|
|
if err != nil {
|
|
t.Fatalf("GetHome() error = %v", err)
|
|
}
|
|
if resp.HasRoom || resp.TurnoverAmount != 0 || resp.ExpectedRewardGold != 0 {
|
|
t.Fatalf("no room response = %+v", resp)
|
|
}
|
|
}
|
|
|
|
func TestGetHomeMatchesDefaultLevelsWhenConfigDisabled(t *testing.T) {
|
|
service, _ := newTestService(t)
|
|
service.repo.Java = stubRoomTurnoverRewardJavaGateway{
|
|
userRoom: integration.RoomProfile{
|
|
ID: integration.Int64Value(101),
|
|
UserID: integration.Int64Value(9001),
|
|
SysOrigin: "LIKEI",
|
|
},
|
|
current: integration.RoomContributionActivityCount{
|
|
RoomID: integration.Int64Value(101),
|
|
ContributionValue: integration.AmountValue(7200000),
|
|
},
|
|
}
|
|
|
|
resp, err := service.GetHome(context.Background(), common.AuthUser{UserID: 9001, SysOrigin: "LIKEI"})
|
|
if err != nil {
|
|
t.Fatalf("GetHome() error = %v", err)
|
|
}
|
|
if resp.Configured || resp.ActivityStatus != roomTurnoverRewardActivityStatusDisabled {
|
|
t.Fatalf("config fields = %+v", resp)
|
|
}
|
|
if resp.MatchedLevel != 4 || resp.ExpectedRewardGold != 250000 || resp.HighlightRewardGold != 250000 {
|
|
t.Fatalf("reward fields = %+v", resp)
|
|
}
|
|
}
|