Remove number from label identifier list (#12831)

This commit is contained in:
Paul Rastoin
2025-06-24 20:05:27 +02:00
committed by GitHub
parent b31845b7ba
commit 2fc300a63c
14 changed files with 258 additions and 120 deletions

View File

@ -0,0 +1,34 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Object metadata update should fail when labelIdentifier is not a TEXT or NAME field 1`] = `
[
{
"extensions": {
"code": "BAD_USER_INPUT",
},
"message": "labelIdentifierFieldMetadataId validation failed: it must be a TEXT or FULL_NAME field metadata type id",
},
]
`;
exports[`Object metadata update should fail when labelIdentifier is not a known field metadata id 1`] = `
[
{
"extensions": {
"code": "BAD_USER_INPUT",
},
"message": "labelIdentifierFieldMetadataId validation failed: related field metadata not found",
},
]
`;
exports[`Object metadata update should fail when labelIdentifier is not a uuid 1`] = `
[
{
"extensions": {
"code": "BAD_USER_INPUT",
},
"message": "labelIdentifierFieldMetadataId must be a UUID",
},
]
`;

View File

@ -0,0 +1,96 @@
import { createOneFieldMetadata } from 'test/integration/metadata/suites/field-metadata/utils/create-one-field-metadata.util';
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 { getMockCreateObjectInput } from 'test/integration/metadata/suites/object-metadata/utils/generate-mock-create-object-metadata-input';
import { updateOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/update-one-object-metadata.util';
import { EachTestingContext } from 'twenty-shared/testing';
import { FieldMetadataType } from 'twenty-shared/types';
import { UpdateObjectPayload } from 'src/engine/metadata-modules/object-metadata/dtos/update-object.input';
type TestingRuntimeContext = {
objectMetadataId: string;
numberFieldMetadataId: string;
};
type CreateOneObjectMetadataItemTestingContext = EachTestingContext<
| ((args: TestingRuntimeContext) => Partial<UpdateObjectPayload>)
| Partial<UpdateObjectPayload>
>[];
const labelIdentifierFailingTestsUseCase: CreateOneObjectMetadataItemTestingContext =
[
{
title: 'when labelIdentifier is not a uuid',
context: {
labelIdentifierFieldMetadataId: 'not-a-uuid',
},
},
{
title: 'when labelIdentifier is not a known field metadata id',
context: {
labelIdentifierFieldMetadataId: '42422020-f49c-4159-8751-76a24f47b360',
},
},
{
title: 'when labelIdentifier is not a TEXT or NAME field',
context: ({ numberFieldMetadataId }) => ({
labelIdentifierFieldMetadataId: numberFieldMetadataId,
}),
},
];
const allTestsUseCases = [...labelIdentifierFailingTestsUseCase];
describe('Object metadata update should fail', () => {
let objectMetadataId: string;
let numberFieldMetadataId: string;
beforeAll(async () => {
const { data } = await createOneObjectMetadata({
input: getMockCreateObjectInput(),
});
objectMetadataId = data.createOneObject.id;
const {
data: { createOneField },
} = await createOneFieldMetadata({
input: {
objectMetadataId: objectMetadataId,
name: 'testName',
label: 'Test name',
isLabelSyncedWithName: true,
type: FieldMetadataType.NUMBER,
},
});
numberFieldMetadataId = createOneField.id;
});
afterAll(async () => {
await deleteOneObjectMetadata({
input: {
idToDelete: objectMetadataId,
},
});
});
it.each(allTestsUseCases)('$title', async ({ context }) => {
const updatePayload =
typeof context === 'function'
? context({ numberFieldMetadataId, objectMetadataId })
: context;
const { errors } = await updateOneObjectMetadata({
input: {
idToUpdate: objectMetadataId,
updatePayload,
},
expectToFail: true,
});
expect(errors).toBeDefined();
expect(errors).toMatchSnapshot();
});
});