Files
Genarrative/src/editor/shared/jsonClient.test.ts
kdletters cbc27bad4a
Some checks failed
CI / verify (push) Has been cancelled
init with react+axum+spacetimedb
2026-04-26 18:06:23 +08:00

50 lines
1.4 KiB
TypeScript

import {describe, expect, it} from 'vitest';
import {parseApiErrorMessage} from './jsonClient';
describe('parseApiErrorMessage', () => {
it('prefers api error detail messages for business failures', () => {
expect(
parseApiErrorMessage(
JSON.stringify({
ok: false,
data: null,
error: {
code: 'BAD_REQUEST',
message: '请求参数不合法',
details: {
message: 'big_fish 发布校验未通过:还缺少 16 个基础动作',
provider: 'spacetimedb',
},
},
meta: {
apiVersion: '2026-04-08',
},
}),
'Fallback failure',
),
).toBe('big_fish 发布校验未通过:还缺少 16 个基础动作');
});
it('prefers nested api error messages', () => {
expect(
parseApiErrorMessage(
JSON.stringify({
error: {
message: 'Detailed failure',
},
}),
'Fallback failure',
),
).toBe('Detailed failure');
});
it('falls back to the raw response text when the payload is not json', () => {
expect(parseApiErrorMessage('Plain text failure', 'Fallback failure')).toBe('Plain text failure');
});
it('uses the fallback when the response body is empty', () => {
expect(parseApiErrorMessage('', 'Fallback failure')).toBe('Fallback failure');
});
});