Files
Agent-System/web/src/api/freeformDoc.test.ts
T
weichenandCursor 17f430b267 fix(web): reuse projectSettingsError envelope across API clients
Prefer error_code when present and route projectMembers/freeformDoc/
taskRuns/chatSessions failures through the shared structured parser.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 03:02:06 +00:00

30 lines
1.0 KiB
TypeScript

import test from 'node:test';
import assert from 'node:assert/strict';
import { updateFreeformDoc } from './freeformDoc';
import { ProjectSettingsApiError } from './projectSettingsError';
test('updateFreeformDoc exposes CONCURRENCY_CONFLICT on 409', async () => {
const originalFetch = globalThis.fetch;
globalThis.fetch = async () =>
new Response(
JSON.stringify({
error_code: 'CONCURRENCY_CONFLICT',
message: '文档已被更新产生版本冲突,请刷新重试',
}),
{ status: 409, headers: { 'Content-Type': 'application/json' } },
);
try {
await assert.rejects(
() => updateFreeformDoc('doc_fixture', { contentMarkdown: 'x', expectedVersion: 1 }),
(err: unknown) => {
assert.ok(err instanceof ProjectSettingsApiError);
assert.equal((err as ProjectSettingsApiError).status, 409);
assert.equal((err as ProjectSettingsApiError).code, 'CONCURRENCY_CONFLICT');
return true;
},
);
} finally {
globalThis.fetch = originalFetch;
}
});