import { CREATE_ENUM_FIELD_METADATA_TEST_CASES } from 'test/integration/metadata/suites/field-metadata/enum/common/create-enum-field-metadata-test-cases'; import { createOneFieldMetadata } from 'test/integration/metadata/suites/field-metadata/utils/create-one-field-metadata.util'; import { CUSTOM_OBJECT_DISHES } from 'test/integration/metadata/suites/object-metadata/constants/custom-object-dishes.constants'; import { createOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/create-one-object-metadata.util'; import { deleteOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/delete-one-object-metadata.util'; import { updateOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/update-one-object-metadata.util'; import { extractRecordIdsAndDatesAsExpectAny } from 'test/utils/extract-record-ids-and-dates-as-expect-any'; import { eachTestingContextFilter } from 'twenty-shared/testing'; import { isDefined } from 'twenty-shared/utils'; import { fieldMetadataEnumTypes } from 'src/engine/metadata-modules/field-metadata/utils/is-enum-field-metadata-type.util'; describe.each(fieldMetadataEnumTypes)( 'Failing create field metadata %s tests suite v2', (testedFieldMetadataType) => { let createdObjectMetadataId: string; const testCases = CREATE_ENUM_FIELD_METADATA_TEST_CASES[testedFieldMetadataType]; if (!isDefined(testCases)) { return; } const { failing: failingTestCases } = testCases; beforeAll(async () => { const { labelPlural, description, labelSingular, namePlural, nameSingular, } = CUSTOM_OBJECT_DISHES; const { data } = await createOneObjectMetadata({ expectToFail: false, input: { labelSingular, labelPlural, nameSingular, description, namePlural, icon: 'IconBuildingSkyscraper', isLabelSyncedWithName: false, }, }); createdObjectMetadataId = data.createOneObject.id; }); afterAll(async () => { await updateOneObjectMetadata({ expectToFail: false, input: { idToUpdate: createdObjectMetadataId, updatePayload: { isActive: false }, }, }); await deleteOneObjectMetadata({ expectToFail: false, input: { idToDelete: createdObjectMetadataId }, }); }); test.each(eachTestingContextFilter(failingTestCases))( 'Create $title', async ({ context: { input } }) => { const { data, errors } = await createOneFieldMetadata({ expectToFail: true, input: { objectMetadataId: createdObjectMetadataId, type: testedFieldMetadataType, name: 'testField', label: 'Test Field', isLabelSyncedWithName: false, ...input, }, gqlFields: ` id options defaultValue `, }); expect(data).toBeNull(); expect(errors).toBeDefined(); expect(errors).toMatchSnapshot( extractRecordIdsAndDatesAsExpectAny(errors), ); expect(errors[0].extensions.code).not.toBe('INTERNAL_SERVER_ERROR'); }, ); }, );