feat: add payout account review flow
This commit is contained in:
@@ -733,3 +733,67 @@ func (s *SuperTestSuite) Test_OrderGovernance() {
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func (s *SuperTestSuite) Test_PayoutAccountReview() {
|
||||
Convey("PayoutAccountReview", s.T(), func() {
|
||||
ctx := s.T().Context()
|
||||
database.Truncate(ctx, s.DB, models.TableNamePayoutAccount, models.TableNameUser, models.TableNameTenant)
|
||||
|
||||
admin := &models.User{Username: "payout_admin"}
|
||||
owner := &models.User{Username: "payout_owner"}
|
||||
models.UserQuery.WithContext(ctx).Create(admin, owner)
|
||||
|
||||
tenant := &models.Tenant{
|
||||
UserID: owner.ID,
|
||||
Name: "Payout Tenant",
|
||||
Code: "payout",
|
||||
Status: consts.TenantStatusVerified,
|
||||
}
|
||||
models.TenantQuery.WithContext(ctx).Create(tenant)
|
||||
|
||||
account := &models.PayoutAccount{
|
||||
TenantID: tenant.ID,
|
||||
UserID: owner.ID,
|
||||
Type: consts.PayoutAccountTypeBank,
|
||||
Name: "Bank",
|
||||
Account: "123",
|
||||
Realname: "Owner",
|
||||
Status: consts.PayoutAccountStatusPending,
|
||||
}
|
||||
models.PayoutAccountQuery.WithContext(ctx).Create(account)
|
||||
|
||||
Convey("should approve payout account", func() {
|
||||
err := Super.ReviewPayoutAccount(ctx, admin.ID, account.ID, &super_dto.SuperPayoutAccountReviewForm{
|
||||
Action: "approve",
|
||||
})
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
reloaded, _ := models.PayoutAccountQuery.WithContext(ctx).Where(models.PayoutAccountQuery.ID.Eq(account.ID)).First()
|
||||
So(reloaded.Status, ShouldEqual, consts.PayoutAccountStatusApproved)
|
||||
So(reloaded.ReviewedBy, ShouldEqual, admin.ID)
|
||||
So(reloaded.ReviewedAt.IsZero(), ShouldBeFalse)
|
||||
})
|
||||
|
||||
Convey("should require reason when rejecting", func() {
|
||||
account2 := &models.PayoutAccount{
|
||||
TenantID: tenant.ID,
|
||||
UserID: owner.ID,
|
||||
Type: consts.PayoutAccountTypeAlipay,
|
||||
Name: "Alipay",
|
||||
Account: "user@example.com",
|
||||
Realname: "Owner",
|
||||
Status: consts.PayoutAccountStatusPending,
|
||||
}
|
||||
models.PayoutAccountQuery.WithContext(ctx).Create(account2)
|
||||
|
||||
err := Super.ReviewPayoutAccount(ctx, admin.ID, account2.ID, &super_dto.SuperPayoutAccountReviewForm{
|
||||
Action: "reject",
|
||||
})
|
||||
So(err, ShouldNotBeNil)
|
||||
|
||||
var appErr *errorx.AppError
|
||||
So(errors.As(err, &appErr), ShouldBeTrue)
|
||||
So(appErr.Code, ShouldEqual, errorx.ErrBadRequest.Code)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user