104 lines
2.7 KiB
Go
104 lines
2.7 KiB
Go
package smashegg
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"chatapp3-golang/internal/model"
|
|
|
|
"gorm.io/driver/sqlite"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func TestPageAdminRecordsDefaultsToLastWeekAndSummarizesGold(t *testing.T) {
|
|
db, err := gorm.Open(sqlite.Open("file:"+t.Name()+"?mode=memory&cache=shared"), &gorm.Config{})
|
|
if err != nil {
|
|
t.Fatalf("open sqlite: %v", err)
|
|
}
|
|
if err := db.AutoMigrate(&model.SmashEggDrawRecord{}); err != nil {
|
|
t.Fatalf("migrate sqlite: %v", err)
|
|
}
|
|
|
|
now := time.Now().Add(-time.Hour).Truncate(time.Second)
|
|
rows := []model.SmashEggDrawRecord{
|
|
{
|
|
DrawNo: "draw-ten",
|
|
EventID: "draw-ten-1",
|
|
SysOrigin: "LIKEI",
|
|
UserID: 1001,
|
|
DrawTimes: 10,
|
|
PaidGold: 1000,
|
|
RewardType: rewardTypeGold,
|
|
GoldAmount: 100,
|
|
RewardValueGold: 100,
|
|
Status: drawStatusSuccess,
|
|
CreateTime: now,
|
|
UpdateTime: now,
|
|
},
|
|
{
|
|
DrawNo: "draw-ten",
|
|
EventID: "draw-ten-2",
|
|
SysOrigin: "LIKEI",
|
|
UserID: 1001,
|
|
DrawTimes: 10,
|
|
PaidGold: 1000,
|
|
RewardType: rewardTypeGold,
|
|
GoldAmount: 200,
|
|
RewardValueGold: 200,
|
|
Status: drawStatusSuccess,
|
|
CreateTime: now,
|
|
UpdateTime: now,
|
|
},
|
|
{
|
|
DrawNo: "draw-one",
|
|
EventID: "draw-one-1",
|
|
SysOrigin: "LIKEI",
|
|
UserID: 1002,
|
|
DrawTimes: 1,
|
|
PaidGold: 100,
|
|
RewardType: rewardTypeGold,
|
|
GoldAmount: 50,
|
|
RewardValueGold: 50,
|
|
Status: drawStatusSuccess,
|
|
CreateTime: now,
|
|
UpdateTime: now,
|
|
},
|
|
{
|
|
DrawNo: "draw-old",
|
|
EventID: "draw-old-1",
|
|
SysOrigin: "LIKEI",
|
|
UserID: 1003,
|
|
DrawTimes: 1,
|
|
PaidGold: 100,
|
|
RewardType: rewardTypeGold,
|
|
GoldAmount: 100,
|
|
RewardValueGold: 100,
|
|
Status: drawStatusSuccess,
|
|
CreateTime: now.AddDate(0, 0, -8),
|
|
UpdateTime: now.AddDate(0, 0, -8),
|
|
},
|
|
}
|
|
if err := db.Create(&rows).Error; err != nil {
|
|
t.Fatalf("insert records: %v", err)
|
|
}
|
|
|
|
service := &Service{db: db}
|
|
resp, err := service.PageAdminRecords(context.Background(), "likei", 0, drawStatusSuccess, 1, 20, "", "")
|
|
if err != nil {
|
|
t.Fatalf("PageAdminRecords returned error: %v", err)
|
|
}
|
|
if resp.Total != 3 {
|
|
t.Fatalf("total = %d, want 3", resp.Total)
|
|
}
|
|
if resp.TotalPaidGold != 1100 {
|
|
t.Fatalf("total paid gold = %d, want 1100", resp.TotalPaidGold)
|
|
}
|
|
if resp.TotalRewardGold != 350 {
|
|
t.Fatalf("total reward gold = %d, want 350", resp.TotalRewardGold)
|
|
}
|
|
if resp.ReturnRatioBasisPoints != 3182 || resp.ReturnRatioPercent != "31.82" {
|
|
t.Fatalf("return ratio = %d/%s, want 3182/31.82", resp.ReturnRatioBasisPoints, resp.ReturnRatioPercent)
|
|
}
|
|
}
|