feat(GOV-010): 建立前端 API 分域边界
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import request from '@/utils/request';
|
||||
import type { components } from '../generated/schema';
|
||||
import { getHealth } from './index';
|
||||
|
||||
vi.mock('@/utils/request', () => ({ default: vi.fn() }));
|
||||
|
||||
type HealthResponseDto = components['schemas']['HealthResponseDto'];
|
||||
|
||||
const healthyDto: HealthResponseDto = {
|
||||
status: 'healthy',
|
||||
process: 'api',
|
||||
checkedAt: '2026-08-13T09:30:00.000Z',
|
||||
dependencies: {
|
||||
mysql: { status: 'healthy', detail: 'ready' },
|
||||
redis: { status: 'healthy', detail: 'ready' },
|
||||
rocketMq: { status: 'disabled', detail: 'disabled' },
|
||||
},
|
||||
};
|
||||
|
||||
describe('健康业务 API', () => {
|
||||
it('通过统一 request 请求版本化路径并返回 OpenAPI DTO', async () => {
|
||||
const signal = new AbortController().signal;
|
||||
vi.mocked(request).mockResolvedValue(healthyDto);
|
||||
|
||||
const result: HealthResponseDto = await getHealth(signal);
|
||||
|
||||
expect(result).toEqual(healthyDto);
|
||||
expect(request).toHaveBeenCalledWith({
|
||||
url: '/api/v1/health',
|
||||
method: 'get',
|
||||
signal,
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,13 @@
|
||||
import type { components } from '@/api/generated/schema';
|
||||
import request from '@/utils/request';
|
||||
|
||||
export type HealthResponseDto = components['schemas']['HealthResponseDto'];
|
||||
|
||||
/** 健康接口只返回 OpenAPI DTO,不把 Axios 响应对象扩散到功能层。 */
|
||||
export function getHealth(signal?: AbortSignal): Promise<HealthResponseDto> {
|
||||
return request<HealthResponseDto>({
|
||||
url: '/api/v1/health',
|
||||
method: 'get',
|
||||
signal,
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user