From e386303fd31683e5dcf831f948bff62f65647ea2 Mon Sep 17 00:00:00 2001 From: Etienne <45695613+etiennejouan@users.noreply.github.com> Date: Fri, 25 Jul 2025 14:26:05 +0200 Subject: [PATCH] Disconnect - fix disconnect false (#13439) Context: {disconnect: false} disconnects relation > fix in this PR + add integration test --- .../relation-nested-queries.ts | 2 +- ...ested-relation-queries.integration-spec.ts | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/packages/twenty-server/src/engine/twenty-orm/relation-nested-queries/relation-nested-queries.ts b/packages/twenty-server/src/engine/twenty-orm/relation-nested-queries/relation-nested-queries.ts index 1a5ab87c7..4f76bf7e4 100644 --- a/packages/twenty-server/src/engine/twenty-orm/relation-nested-queries/relation-nested-queries.ts +++ b/packages/twenty-server/src/engine/twenty-orm/relation-nested-queries/relation-nested-queries.ts @@ -243,7 +243,7 @@ export class RelationNestedQueries { )) { entity = { ...entity, - [disconnectFieldName]: null, + [disconnectFieldName]: undefined, ...(disconnectObject[RELATION_NESTED_QUERY_KEYWORDS.DISCONNECT] === true ? { [getAssociatedRelationFieldName(disconnectFieldName)]: null } diff --git a/packages/twenty-server/test/integration/graphql/suites/object-generated/nested-relation-queries.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/object-generated/nested-relation-queries.integration-spec.ts index db17f0bd0..89d37b37c 100644 --- a/packages/twenty-server/test/integration/graphql/suites/object-generated/nested-relation-queries.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/object-generated/nested-relation-queries.integration-spec.ts @@ -455,6 +455,35 @@ describe('relation connect in workspace createOne/createMany resolvers (e2e)', expect(response.body.data.updatePerson).toBeDefined(); expect(response.body.data.updatePerson.company?.id).toBeUndefined(); }); + + it('should not disconnect a record from a MANY-TO-ONE relation - update One', async () => { + const createPersonToUpdateOperation = createOneOperationFactory({ + objectMetadataSingularName: 'person', + gqlFields: PERSON_GQL_FIELDS_WITH_COMPANY, + data: { + id: TEST_PERSON_1_ID, + companyId: TEST_COMPANY_1_ID, + }, + }); + + await makeGraphqlAPIRequest(createPersonToUpdateOperation); + + const graphqlOperation = updateOneOperationFactory({ + objectMetadataSingularName: 'person', + gqlFields: PERSON_GQL_FIELDS_WITH_COMPANY, + recordId: TEST_PERSON_1_ID, + data: { + company: { + disconnect: false, + }, + }, + }); + + const response = await makeGraphqlAPIRequest(graphqlOperation); + + expect(response.body.data.updatePerson).toBeDefined(); + expect(response.body.data.updatePerson.company?.id).toBe(TEST_COMPANY_1_ID); + }); it('should disconnect a record from a MANY-TO-ONE relation - update Many', async () => { const createPeopleToUpdateOperation = createManyOperationFactory({ objectMetadataSingularName: 'person',