From c0f6f52669c48e6d0bbe252db51dad74831ac739 Mon Sep 17 00:00:00 2001 From: martmull Date: Tue, 16 Jul 2024 10:08:31 +0200 Subject: [PATCH] Bug return multi select fields in rest api response (#6253) Fixes https://discord.com/channels/1130383047699738754/1258194870703493141/1258194870703493141 ## Before ![image](https://github.com/user-attachments/assets/49aaed36-6106-47f7-9d55-a4a2fed138e0) ## After ![image](https://github.com/user-attachments/assets/19343d60-f47e-4ebb-b2d4-3bcc7674e64b) --- ...ld-metadata-to-graphql-query.utils.spec.ts | 30 ++++++++++++++++--- ...p-field-metadata-to-graphql-query.utils.ts | 10 +++++-- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/__tests__/map-field-metadata-to-graphql-query.utils.spec.ts b/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/__tests__/map-field-metadata-to-graphql-query.utils.spec.ts index b06c26ec36d4..473c6f8408d8 100644 --- a/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/__tests__/map-field-metadata-to-graphql-query.utils.spec.ts +++ b/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/__tests__/map-field-metadata-to-graphql-query.utils.spec.ts @@ -6,17 +6,19 @@ import { objectMetadataItemMock, } from 'src/engine/api/__mocks__/object-metadata-item.mock'; import { mapFieldMetadataToGraphqlQuery } from 'src/engine/api/rest/core/query-builder/utils/map-field-metadata-to-graphql-query.utils'; +import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; +import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; describe('mapFieldMetadataToGraphqlQuery', () => { it('should map properly', () => { expect( - mapFieldMetadataToGraphqlQuery(objectMetadataItemMock, fieldNumberMock), + mapFieldMetadataToGraphqlQuery([objectMetadataItemMock], fieldNumberMock), ).toEqual('fieldNumber'); expect( - mapFieldMetadataToGraphqlQuery(objectMetadataItemMock, fieldTextMock), + mapFieldMetadataToGraphqlQuery([objectMetadataItemMock], fieldTextMock), ).toEqual('fieldText'); expect( - mapFieldMetadataToGraphqlQuery(objectMetadataItemMock, fieldLinkMock), + mapFieldMetadataToGraphqlQuery([objectMetadataItemMock], fieldLinkMock), ).toEqual(` fieldLink { @@ -25,7 +27,10 @@ describe('mapFieldMetadataToGraphqlQuery', () => { } `); expect( - mapFieldMetadataToGraphqlQuery(objectMetadataItemMock, fieldCurrencyMock), + mapFieldMetadataToGraphqlQuery( + [objectMetadataItemMock], + fieldCurrencyMock, + ), ).toEqual(` fieldCurrency { @@ -34,4 +39,21 @@ describe('mapFieldMetadataToGraphqlQuery', () => { } `); }); + describe('should handle all field metadata types', () => { + Object.values(FieldMetadataType).forEach((fieldMetadataType) => { + it(`with field type ${fieldMetadataType}`, () => { + const field = { + type: fieldMetadataType, + name: 'toObjectMetadataName', + fromRelationMetadata: { + relationType: RelationMetadataType.ONE_TO_MANY, + }, + }; + + expect( + mapFieldMetadataToGraphqlQuery([objectMetadataItemMock], field), + ).toBeDefined(); + }); + }); + }); }); diff --git a/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/map-field-metadata-to-graphql-query.utils.ts b/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/map-field-metadata-to-graphql-query.utils.ts index 7fc9700828d4..4605760eca66 100644 --- a/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/map-field-metadata-to-graphql-query.utils.ts +++ b/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/map-field-metadata-to-graphql-query.utils.ts @@ -19,14 +19,18 @@ export const mapFieldMetadataToGraphqlQuery = ( FieldMetadataType.UUID, FieldMetadataType.TEXT, FieldMetadataType.PHONE, + FieldMetadataType.EMAIL, FieldMetadataType.DATE_TIME, FieldMetadataType.DATE, - FieldMetadataType.EMAIL, + FieldMetadataType.BOOLEAN, FieldMetadataType.NUMBER, - FieldMetadataType.SELECT, + FieldMetadataType.NUMERIC, + FieldMetadataType.PROBABILITY, FieldMetadataType.RATING, - FieldMetadataType.BOOLEAN, + FieldMetadataType.SELECT, + FieldMetadataType.MULTI_SELECT, FieldMetadataType.POSITION, + FieldMetadataType.RAW_JSON, ].includes(fieldType); if (fieldIsSimpleValue) {