Fix deactivate objects impacts (#11185)

In this PR:
- Remove deactivated objects from ActivityTargetInlineCell record picker
- Prevent users to deactivate createdAt, updatedAt, deletedAt fields on
any objects

Still left:
- write unit tests on the assert utils
- write integration tests on field metadata service
- prevent users to deactivate createdAt, updatedAt, deletedAt on FE
This commit is contained in:
Charles Bochet
2025-03-26 20:45:46 +01:00
committed by GitHub
parent 90e884d33f
commit 5bd10d40cb
49 changed files with 861 additions and 531 deletions

View File

@ -1,15 +0,0 @@
import { CreateObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/create-object.input';
// TODO would tend to use faker
export const getMockCreateObjectInput = (
overrides?: Partial<Omit<CreateObjectInput, 'workspaceId' | 'dataSourceId'>>,
) => ({
namePlural: 'listings',
nameSingular: 'listing',
labelPlural: 'Listings',
labelSingular: 'Listing',
description: 'Listing object',
icon: 'IconListNumbers',
isLabelSyncedWithName: false,
...overrides,
});

View File

@ -1,28 +0,0 @@
import { deleteOneObjectMetadataItem } from 'test/integration/metadata/suites/object-metadata/utils/delete-one-object-metadata.util';
import { performObjectMetadataCreation } from 'test/integration/utils/object-metadata/perform-object-metadata-creation';
import { isDefined } from 'twenty-shared/utils';
import { CreateObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/create-object.input';
export const performFailingObjectMetadataCreation = async (
objectInput: Omit<CreateObjectInput, 'workspaceId' | 'dataSourceId'>,
) => {
const response = await performObjectMetadataCreation(objectInput);
if (isDefined(response.body.data)) {
try {
const createdId = response.body.data.createOneObject.id;
await deleteOneObjectMetadataItem(createdId);
} catch (e) {
// eslint-disable-next-line no-console
console.error(e);
}
expect(false).toEqual(
'Object Metadata Item should have failed but did not',
);
}
expect(response.body.errors.length).toBeGreaterThan(0);
return response.body.errors;
};

View File

@ -1,18 +0,0 @@
import { createOneObjectMetadataFactory } from 'test/integration/metadata/suites/object-metadata/utils/create-one-object-metadata-factory.util';
import { makeMetadataAPIRequest } from 'test/integration/metadata/suites/utils/make-metadata-api-request.util';
import { CreateObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/create-object.input';
export const performObjectMetadataCreation = async (
args: Omit<CreateObjectInput, 'workspaceId' | 'dataSourceId'>,
) => {
const graphqlOperation = createOneObjectMetadataFactory({
input: { object: args },
gqlFields: `
id
nameSingular
`,
});
return await makeMetadataAPIRequest(graphqlOperation);
};