From d3ba1eaefad3007bac1770d7c37059125beda4f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Sat, 6 Sep 2025 02:26:05 +0800 Subject: [PATCH] =?UTF-8?q?feat(dealer/withdraw):=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=8F=90=E7=8E=B0=E6=89=8B=E7=BB=AD=E8=B4=B9=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=E5=B9=B6=E6=B7=BB=E5=8A=A0=E5=AF=B9=E5=85=AC=E8=BD=AC=E8=B4=A6?= =?UTF-8?q?=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新最低提现金额说明,增加每笔3元手续费信息- 在提现方式中添加对公转账选项 - 删除了withdraw.test.tsx文件,可能因为不再需要相关测试 --- .../withdraw/__tests__/withdraw.test.tsx | 184 ------------------ src/dealer/withdraw/index.tsx | 5 +- 2 files changed, 4 insertions(+), 185 deletions(-) delete mode 100644 src/dealer/withdraw/__tests__/withdraw.test.tsx diff --git a/src/dealer/withdraw/__tests__/withdraw.test.tsx b/src/dealer/withdraw/__tests__/withdraw.test.tsx deleted file mode 100644 index c3aeab9..0000000 --- a/src/dealer/withdraw/__tests__/withdraw.test.tsx +++ /dev/null @@ -1,184 +0,0 @@ -import React from 'react' -import { render, fireEvent, waitFor } from '@testing-library/react' -import DealerWithdraw from '../index' -import { useDealerUser } from '@/hooks/useDealerUser' -import * as withdrawAPI from '@/api/shop/shopDealerWithdraw' - -// Mock dependencies -jest.mock('@/hooks/useDealerUser') -jest.mock('@/api/shop/shopDealerWithdraw') -jest.mock('@tarojs/taro', () => ({ - showToast: jest.fn(), - getStorageSync: jest.fn(() => 123), -})) - -const mockUseDealerUser = useDealerUser as jest.MockedFunction -const mockAddShopDealerWithdraw = withdrawAPI.addShopDealerWithdraw as jest.MockedFunction -const mockPageShopDealerWithdraw = withdrawAPI.pageShopDealerWithdraw as jest.MockedFunction - -describe('DealerWithdraw', () => { - const mockDealerUser = { - userId: 123, - money: '10000.00', - realName: '测试用户', - mobile: '13800138000' - } - - beforeEach(() => { - mockUseDealerUser.mockReturnValue({ - dealerUser: mockDealerUser, - loading: false, - error: null, - refresh: jest.fn() - }) - - mockPageShopDealerWithdraw.mockResolvedValue({ - list: [], - count: 0 - }) - }) - - afterEach(() => { - jest.clearAllMocks() - }) - - test('应该正确显示可提现余额', () => { - const { getByText } = render() - expect(getByText('10000.00')).toBeInTheDocument() - expect(getByText('可提现余额')).toBeInTheDocument() - }) - - test('应该验证最低提现金额', async () => { - mockAddShopDealerWithdraw.mockResolvedValue('success') - - const { getByPlaceholderText, getByText } = render() - - // 输入低于最低金额的数值 - const amountInput = getByPlaceholderText('请输入提现金额') - fireEvent.change(amountInput, { target: { value: '50' } }) - - // 选择提现方式 - const wechatRadio = getByText('微信钱包') - fireEvent.click(wechatRadio) - - // 提交表单 - const submitButton = getByText('申请提现') - fireEvent.click(submitButton) - - await waitFor(() => { - expect(require('@tarojs/taro').showToast).toHaveBeenCalledWith({ - title: '最低提现金额为100元', - icon: 'error' - }) - }) - }) - - test('应该验证提现金额不超过可用余额', async () => { - const { getByPlaceholderText, getByText } = render() - - // 输入超过可用余额的金额 - const amountInput = getByPlaceholderText('请输入提现金额') - fireEvent.change(amountInput, { target: { value: '20000' } }) - - // 选择提现方式 - const wechatRadio = getByText('微信钱包') - fireEvent.click(wechatRadio) - - // 提交表单 - const submitButton = getByText('申请提现') - fireEvent.click(submitButton) - - await waitFor(() => { - expect(require('@tarojs/taro').showToast).toHaveBeenCalledWith({ - title: '提现金额超过可用余额', - icon: 'error' - }) - }) - }) - - test('应该验证支付宝账户信息完整性', async () => { - const { getByPlaceholderText, getByText } = render() - - // 输入有效金额 - const amountInput = getByPlaceholderText('请输入提现金额') - fireEvent.change(amountInput, { target: { value: '1000' } }) - - // 选择支付宝提现 - const alipayRadio = getByText('支付宝') - fireEvent.click(alipayRadio) - - // 只填写账号,不填写姓名 - const accountInput = getByPlaceholderText('请输入支付宝账号') - fireEvent.change(accountInput, { target: { value: 'test@alipay.com' } }) - - // 提交表单 - const submitButton = getByText('申请提现') - fireEvent.click(submitButton) - - await waitFor(() => { - expect(require('@tarojs/taro').showToast).toHaveBeenCalledWith({ - title: '请填写完整的支付宝信息', - icon: 'error' - }) - }) - }) - - test('应该成功提交微信提现申请', async () => { - mockAddShopDealerWithdraw.mockResolvedValue('success') - - const { getByPlaceholderText, getByText } = render() - - // 输入有效金额 - const amountInput = getByPlaceholderText('请输入提现金额') - fireEvent.change(amountInput, { target: { value: '1000' } }) - - // 选择微信提现 - const wechatRadio = getByText('微信钱包') - fireEvent.click(wechatRadio) - - // 提交表单 - const submitButton = getByText('申请提现') - fireEvent.click(submitButton) - - await waitFor(() => { - expect(mockAddShopDealerWithdraw).toHaveBeenCalledWith({ - userId: 123, - money: '1000', - payType: 10, - applyStatus: 10, - platform: 'MiniProgram' - }) - }) - - await waitFor(() => { - expect(require('@tarojs/taro').showToast).toHaveBeenCalledWith({ - title: '提现申请已提交', - icon: 'success' - }) - }) - }) - - test('快捷金额按钮应该正常工作', () => { - const { getByText, getByPlaceholderText } = render() - - // 点击快捷金额按钮 - const quickAmountButton = getByText('500') - fireEvent.click(quickAmountButton) - - // 验证金额输入框的值 - const amountInput = getByPlaceholderText('请输入提现金额') as HTMLInputElement - expect(amountInput.value).toBe('500') - }) - - test('全部按钮应该设置为可用余额', () => { - const { getByText, getByPlaceholderText } = render() - - // 点击全部按钮 - const allButton = getByText('全部') - fireEvent.click(allButton) - - // 验证金额输入框的值 - const amountInput = getByPlaceholderText('请输入提现金额') as HTMLInputElement - expect(amountInput.value).toBe('10000.00') - }) -}) diff --git a/src/dealer/withdraw/index.tsx b/src/dealer/withdraw/index.tsx index 04a3cef..9a3fbfe 100644 --- a/src/dealer/withdraw/index.tsx +++ b/src/dealer/withdraw/index.tsx @@ -303,7 +303,7 @@ const DealerWithdraw: React.FC = () => { borderTop: '1px solid rgba(255, 255, 255, 0.3)' }}> - 最低提现金额:¥100 | 手续费:免费 + 最低提现金额:¥100 | 手续费:每笔3元 @@ -365,6 +365,9 @@ const DealerWithdraw: React.FC = () => { 银行卡 + + 对公转账 +