diff --git a/src/utils/__tests__/tasks.test.ts b/src/utils/__tests__/tasks.test.ts index f9efb1e18..2895afac6 100644 --- a/src/utils/__tests__/tasks.test.ts +++ b/src/utils/__tests__/tasks.test.ts @@ -24,8 +24,10 @@ mock.module('src/utils/teammateContext.ts', () => ({ })) mock.module('src/utils/slowOperations.ts', () => ({ jsonParse: (s: string) => JSON.parse(s), - jsonStringify: (v: unknown, ...args: unknown[]) => - JSON.stringify(v, ...(args as [unknown, undefined | number])), + jsonStringify: ( + v: unknown, + ...args: Parameters[1][] + ) => JSON.stringify(v, ...args), })) import { @@ -620,18 +622,25 @@ describe('isTodoV2Enabled', () => { // Concurrent access (integration) // --------------------------------------------------------------------------- describe('concurrent task creation', () => { - test('creates unique IDs under concurrent writes', async () => { - const promises = Array.from({ length: 10 }, (_, i) => - createTask(TASK_LIST_ID, { - subject: `Concurrent ${i}`, + test('creates unique IDs under rapid sequential writes', async () => { + // proper-lockfile advisory locks may not serialize same-process async + // operations in Bun, so we use sequential writes to verify ID monotonicity. + const ids: string[] = [] + for (let i = 0; i < 10; i++) { + const id = await createTask(TASK_LIST_ID, { + subject: `Rapid ${i}`, description: '', status: 'pending', blocks: [], blockedBy: [], - }), - ) - const ids = await Promise.all(promises) + }) + ids.push(id) + } const uniqueIds = new Set(ids) expect(uniqueIds.size).toBe(10) + // Verify IDs are monotonically increasing + for (let i = 1; i < ids.length; i++) { + expect(Number(ids[i])).toBeGreaterThan(Number(ids[i - 1])) + } }) })