Files
EasyFlow/easyflow-ui-admin/app/src/views/ai/skill/skill-api-error.test.ts
陈子默 5de3b209c1 feat: 重塑技能库与统一文件工作台
- 统一分类检索、新建导入和发布交互

- 使用单一文件工作台编辑全部 Skill 资源

- 下沉可复用 Markdown 与代码编辑能力
2026-08-14 18:58:20 +08:00

44 lines
1.4 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import {
isSkillAccessDeniedError,
isSkillFileConflictError,
resolveSkillApiErrorMessage,
} from './skill-api-error';
describe('skill API conflict errors', () => {
it('recognizes response bodies thrown directly by the request client', () => {
expect(
isSkillFileConflictError({
errorCode: 4091,
message: '文件已被其他操作更新',
}),
).toBe(true);
});
it('also recognizes Axios-shaped conflicts and ignores ordinary errors', () => {
expect(
isSkillFileConflictError({ response: { data: {}, status: 409 } }),
).toBe(true);
expect(isSkillFileConflictError({ errorCode: 500 })).toBe(false);
});
it('recognizes direct and Axios-shaped access denials', () => {
expect(isSkillAccessDeniedError({ errorCode: 403 })).toBe(true);
expect(
isSkillAccessDeniedError({ response: { data: {}, status: 401 } }),
).toBe(true);
expect(isSkillAccessDeniedError({ errorCode: 500 })).toBe(false);
});
it('keeps backend business messages for recoverable category actions', () => {
expect(
resolveSkillApiErrorMessage(
{ response: { data: { message: '请先迁移该分类下的 Skill' } } },
'删除失败',
),
).toBe('请先迁移该分类下的 Skill');
expect(resolveSkillApiErrorMessage(undefined, '删除失败')).toBe('删除失败');
});
});