All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m22s
- 移动 17 个 DTO 文件到 internal/model/dto/ 目录 - 更新所有 DTO 文件的 package 声明从 model 改为 dto - 更新所有引用文件的 import 和类型引用 - Handler 层:admin 和 h5 所有处理器 - Service 层:所有业务服务 - Routes 层:所有路由定义 - Tests 层:单元测试和集成测试 - 清理未使用的 import 语句 - 验证:项目构建成功,测试编译通过,LSP 无错误
140 lines
4.4 KiB
Go
140 lines
4.4 KiB
Go
package unit
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/break/junhong_cmp_fiber/internal/model/dto"
|
|
"github.com/break/junhong_cmp_fiber/internal/service/commission_withdrawal"
|
|
"github.com/break/junhong_cmp_fiber/internal/store/postgres"
|
|
"github.com/break/junhong_cmp_fiber/pkg/constants"
|
|
"github.com/break/junhong_cmp_fiber/tests/testutils"
|
|
)
|
|
|
|
func createWithdrawalTestContext(userID uint) context.Context {
|
|
ctx := context.Background()
|
|
ctx = context.WithValue(ctx, constants.ContextKeyUserID, userID)
|
|
ctx = context.WithValue(ctx, constants.ContextKeyUserType, constants.UserTypePlatform)
|
|
return ctx
|
|
}
|
|
|
|
func TestCommissionWithdrawalService_ListWithdrawalRequests(t *testing.T) {
|
|
db, redisClient := testutils.SetupTestDB(t)
|
|
defer testutils.TeardownTestDB(t, db, redisClient)
|
|
|
|
shopStore := postgres.NewShopStore(db, redisClient)
|
|
accountStore := postgres.NewAccountStore(db, redisClient)
|
|
walletStore := postgres.NewWalletStore(db, redisClient)
|
|
walletTransactionStore := postgres.NewWalletTransactionStore(db, redisClient)
|
|
commissionWithdrawalRequestStore := postgres.NewCommissionWithdrawalRequestStore(db, redisClient)
|
|
|
|
service := commission_withdrawal.New(db, shopStore, accountStore, walletStore, walletTransactionStore, commissionWithdrawalRequestStore)
|
|
|
|
t.Run("查询提现申请列表-空结果", func(t *testing.T) {
|
|
ctx := createWithdrawalTestContext(1)
|
|
|
|
req := &dto.WithdrawalRequestListReq{
|
|
Page: 1,
|
|
PageSize: 20,
|
|
}
|
|
|
|
result, err := service.ListWithdrawalRequests(ctx, req)
|
|
require.NoError(t, err)
|
|
assert.NotNil(t, result)
|
|
assert.GreaterOrEqual(t, result.Total, int64(0))
|
|
})
|
|
|
|
t.Run("按状态筛选提现申请", func(t *testing.T) {
|
|
ctx := createWithdrawalTestContext(1)
|
|
|
|
status := 1
|
|
req := &dto.WithdrawalRequestListReq{
|
|
Page: 1,
|
|
PageSize: 20,
|
|
Status: &status,
|
|
}
|
|
|
|
result, err := service.ListWithdrawalRequests(ctx, req)
|
|
require.NoError(t, err)
|
|
assert.NotNil(t, result)
|
|
})
|
|
|
|
t.Run("按时间范围筛选提现申请", func(t *testing.T) {
|
|
ctx := createWithdrawalTestContext(1)
|
|
|
|
req := &dto.WithdrawalRequestListReq{
|
|
Page: 1,
|
|
PageSize: 20,
|
|
StartTime: "2025-01-01 00:00:00",
|
|
EndTime: "2025-12-31 23:59:59",
|
|
}
|
|
|
|
result, err := service.ListWithdrawalRequests(ctx, req)
|
|
require.NoError(t, err)
|
|
assert.NotNil(t, result)
|
|
})
|
|
}
|
|
|
|
func TestCommissionWithdrawalService_Approve(t *testing.T) {
|
|
db, redisClient := testutils.SetupTestDB(t)
|
|
defer testutils.TeardownTestDB(t, db, redisClient)
|
|
|
|
shopStore := postgres.NewShopStore(db, redisClient)
|
|
accountStore := postgres.NewAccountStore(db, redisClient)
|
|
walletStore := postgres.NewWalletStore(db, redisClient)
|
|
walletTransactionStore := postgres.NewWalletTransactionStore(db, redisClient)
|
|
commissionWithdrawalRequestStore := postgres.NewCommissionWithdrawalRequestStore(db, redisClient)
|
|
|
|
service := commission_withdrawal.New(db, shopStore, accountStore, walletStore, walletTransactionStore, commissionWithdrawalRequestStore)
|
|
|
|
t.Run("审批不存在的提现申请应失败", func(t *testing.T) {
|
|
ctx := createWithdrawalTestContext(1)
|
|
|
|
req := &dto.ApproveWithdrawalReq{
|
|
PaymentType: "manual",
|
|
}
|
|
|
|
_, err := service.Approve(ctx, 99999, req)
|
|
assert.Error(t, err)
|
|
})
|
|
}
|
|
|
|
func TestCommissionWithdrawalService_Reject(t *testing.T) {
|
|
db, redisClient := testutils.SetupTestDB(t)
|
|
defer testutils.TeardownTestDB(t, db, redisClient)
|
|
|
|
shopStore := postgres.NewShopStore(db, redisClient)
|
|
accountStore := postgres.NewAccountStore(db, redisClient)
|
|
walletStore := postgres.NewWalletStore(db, redisClient)
|
|
walletTransactionStore := postgres.NewWalletTransactionStore(db, redisClient)
|
|
commissionWithdrawalRequestStore := postgres.NewCommissionWithdrawalRequestStore(db, redisClient)
|
|
|
|
service := commission_withdrawal.New(db, shopStore, accountStore, walletStore, walletTransactionStore, commissionWithdrawalRequestStore)
|
|
|
|
t.Run("拒绝不存在的提现申请应失败", func(t *testing.T) {
|
|
ctx := createWithdrawalTestContext(1)
|
|
|
|
req := &dto.RejectWithdrawalReq{
|
|
Remark: "测试拒绝原因",
|
|
}
|
|
|
|
_, err := service.Reject(ctx, 99999, req)
|
|
assert.Error(t, err)
|
|
})
|
|
}
|
|
|
|
func TestCommissionWithdrawalService_ConcurrentApproval(t *testing.T) {
|
|
t.Run("并发审批测试-状态检查", func(t *testing.T) {
|
|
assert.True(t, true)
|
|
})
|
|
}
|
|
|
|
func TestCommissionWithdrawalService_InsufficientBalance(t *testing.T) {
|
|
t.Run("余额不足测试", func(t *testing.T) {
|
|
assert.True(t, true)
|
|
})
|
|
}
|