From d970bd041c2b6ce997b587e7729fe2b39406123b Mon Sep 17 00:00:00 2001 From: fengmk2 Date: Wed, 12 Feb 2025 03:48:21 +0000 Subject: [PATCH] test(server): avoid db deadlock on unittest (#10104) https://github.com/toeverything/AFFiNE/runs/37010719190 ![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/hTwOityLamd4hitrae7M/8df7dc1f-c549-46f2-9aca-f93d750b1a0b.png) --- .../backend/server/src/__tests__/models/user.spec.ts | 5 ++++- .../backend/server/src/__tests__/utils/testing-app.ts | 11 +++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/backend/server/src/__tests__/models/user.spec.ts b/packages/backend/server/src/__tests__/models/user.spec.ts index a7a590c51..6109cc143 100644 --- a/packages/backend/server/src/__tests__/models/user.spec.ts +++ b/packages/backend/server/src/__tests__/models/user.spec.ts @@ -5,7 +5,7 @@ import { EmailAlreadyUsed, EventBus } from '../../base'; import { WorkspaceRole } from '../../core/permission'; import { UserModel } from '../../models/user'; import { WorkspaceMemberStatus } from '../../models/workspace'; -import { createTestingModule, type TestingModule } from '../utils'; +import { createTestingModule, sleep, type TestingModule } from '../utils'; interface Context { module: TestingModule; @@ -272,6 +272,9 @@ test('should trigger user.deleted event', async t => { t.true( spy.calledOnceWithExactly({ ...user, ownedWorkspaces: ['test-workspace'] }) ); + // await for 'user.deleted' event to be emitted and executed + // avoid race condition cause database dead lock + await sleep(100); }); test('should paginate users', async t => { diff --git a/packages/backend/server/src/__tests__/utils/testing-app.ts b/packages/backend/server/src/__tests__/utils/testing-app.ts index 2271c547d..2bc499656 100644 --- a/packages/backend/server/src/__tests__/utils/testing-app.ts +++ b/packages/backend/server/src/__tests__/utils/testing-app.ts @@ -156,8 +156,15 @@ export class TestingApp extends ApplyType() { .send({ query, variables, - }) - .expect(200); + }); + + if (res.status !== 200) { + throw new Error( + `Failed to execute gql: ${query}, status: ${res.status}, body: ${JSON.stringify( + res.body + )}` + ); + } if (res.body.errors?.length) { throw new Error(res.body.errors[0].message);