From 84e0fa82e6c596829f340f3e41f77a7302783f2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Wed, 5 Aug 2026 17:40:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=85=85=E5=80=BC=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E8=AF=B7=E6=B1=82=E5=8F=96=E6=B6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 通过现有请求选项透传 AbortSignal,确保共享钱包切换账号时可以中止旧请求。 新增充值中心信号透传回归测试并纳入 Vitest。 --- .../platformProfileClient.test.ts | 37 +++++++++++++++++++ .../platform-entry/platformProfileClient.ts | 3 +- src/stores/usePlatformWalletStore.ts | 2 +- vitest.config.ts | 1 + 4 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 src/services/platform-entry/platformProfileClient.test.ts diff --git a/src/services/platform-entry/platformProfileClient.test.ts b/src/services/platform-entry/platformProfileClient.test.ts new file mode 100644 index 000000000..a4f2e24e7 --- /dev/null +++ b/src/services/platform-entry/platformProfileClient.test.ts @@ -0,0 +1,37 @@ +import { beforeEach, describe, expect, test, vi } from 'vitest'; + +const apiClientMocks = vi.hoisted(() => ({ + fetchWithApiAuth: vi.fn(), + requestJson: vi.fn(), +})); + +vi.mock('../apiClient', () => apiClientMocks); + +import { getPlatformProfileRechargeCenter } from './platformProfileClient'; + +describe('platformProfileClient', () => { + beforeEach(() => { + apiClientMocks.requestJson.mockReset(); + apiClientMocks.requestJson.mockResolvedValue({}); + }); + + test('forwards the recharge-center abort signal through request options', async () => { + const abortController = new AbortController(); + + await getPlatformProfileRechargeCenter({ + signal: abortController.signal, + }); + + expect(apiClientMocks.requestJson).toHaveBeenCalledWith( + '/api/profile/recharge-center', + { + method: 'GET', + signal: abortController.signal, + }, + '读取泥点购买信息失败', + expect.objectContaining({ + retry: expect.any(Object), + }), + ); + }); +}); diff --git a/src/services/platform-entry/platformProfileClient.ts b/src/services/platform-entry/platformProfileClient.ts index 98a7e1ea7..7164a8118 100644 --- a/src/services/platform-entry/platformProfileClient.ts +++ b/src/services/platform-entry/platformProfileClient.ts @@ -142,11 +142,10 @@ export function revokePlatformProfileExternalApiKey( export function getPlatformProfileRechargeCenter( options: PlatformProfileRequestOptions = {}, - signal?: AbortSignal, ) { return requestPlatformProfileJson( '/recharge-center', - { method: 'GET', signal }, + { method: 'GET' }, '读取泥点购买信息失败', options, ); diff --git a/src/stores/usePlatformWalletStore.ts b/src/stores/usePlatformWalletStore.ts index fbea92a11..89cb7017e 100644 --- a/src/stores/usePlatformWalletStore.ts +++ b/src/stores/usePlatformWalletStore.ts @@ -5,7 +5,7 @@ import { getPlatformProfileRechargeCenter } from '@/src/services/platform-entry/ export const usePlatformWalletStore = createProfileWalletStore({ getRechargeCenter: (signal) => - getPlatformProfileRechargeCenter({}, signal), + getPlatformProfileRechargeCenter({ signal }), }); export function usePlatformWalletLifecycle( diff --git a/vitest.config.ts b/vitest.config.ts index ca9e179c6..7672c4752 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -46,6 +46,7 @@ export default defineConfig({ 'src/services/image-editor/**/*.test.ts', 'src/services/external-generation/**/*.test.ts', 'src/services/payment/**/*.test.ts', + 'src/services/platform-entry/platformProfileClient.test.ts', 'src/components/auth/**/*.test.ts', 'src/components/auth/**/*.test.tsx', 'src/components/creation-home/**/*.test.ts',