import { parseApiError } from '@/core/api/parseApiError'; describe('parseApiError', () => { it('prefers unified message field', () => { expect( parseApiError( { error_code: 'NOT_FOUND', message: '资源不存在', request_id: 'r1', }, 'fallback', ), ).toEqual({ message: '资源不存在', errorCode: 'NOT_FOUND', requestId: 'r1', }); }); it('falls back to legacy detail string', () => { expect(parseApiError({ detail: '请求无效' }, 'HTTP 400')).toEqual({ message: '请求无效', errorCode: undefined, requestId: undefined, }); }); it('parses legacy detail validation list', () => { expect( parseApiError( { detail: [{ loc: ['body', 'phone'], msg: 'field required' }], }, 'HTTP 422', ), ).toEqual({ message: 'field required', errorCode: undefined, requestId: undefined, }); }); it('uses fallback when message is missing', () => { expect(parseApiError({ error_code: 'INTERNAL_ERROR' }, 'HTTP 500')).toEqual({ message: 'HTTP 500', errorCode: 'INTERNAL_ERROR', requestId: undefined, }); }); it('uses fallback when body is null', () => { expect(parseApiError(null, 'HTTP 502')).toEqual({ message: 'HTTP 502' }); }); });