Files
twenty/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-with-flat-field-maps-or-throw.util.ts
T
Paul Rastoin eab72d8e67 FlatObjectMetadataMaps utils coverage (#13695)
# Introduction
```ts
 PASS   twenty-server  src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.spec.ts
 PASS   twenty-server  src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/delete-field-from-flat-object-metadata-maps-or-throw.spec.ts
 PASS   twenty-server  src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/find-flat-field-metadata-in-flat-object-metadata-maps.spec.ts
 PASS   twenty-server  src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/replace-flat-object-metadata-in-flat-object-metadata-maps-or-throw.spec.ts
 PASS   twenty-server  src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/replace-flat-field-metadata-in-flat-object-metadata-maps-or-throw.spec.ts
 PASS   twenty-server  src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/find-flat-object-metadata-in-flat-object-metadata-maps.spec.ts
 PASS   twenty-server  src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/add-flat-object-metadata-to-flat-object-metadata-maps-or-throw.spec.ts
 PASS   twenty-server  src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/delete-object-from-flat-object-metadata-maps-or-throw.spec.ts

=============================== Coverage summary ===============================
Statements   : 0.43% ( 159/36564 )
Branches     : 0.16% ( 26/16182 )
Functions    : 0.27% ( 25/9110 )
Lines        : 0.4% ( 142/35006 )
================================================================================

Test Suites: 8 passed, 8 total
Tests:       20 passed, 20 total
Snapshots:   9 passed, 9 total
Time:        7.639 s
```

## Tests utils
Introduced three tests utils:
- expect-flat-field-metadata-to-be-in-flat-object-metadata-maps.util
-
expect-flat-object-metadata-to-strictly-be-in-flat-object-metadata-maps.util
- expect-to-be-defined.util
2025-08-06 17:27:36 +00:00

51 lines
2.0 KiB
TypeScript

import { isDefined, removePropertiesFromRecord } from 'twenty-shared/utils';
import {
FlatObjectMetadataMapsException,
FlatObjectMetadataMapsExceptionCode,
} from 'src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception';
import { FlatObjectMetadataWithFlatFieldMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type';
type DeleteFieldFromFlatObjectMetadataMapsOrThrowArgs = {
fieldMetadataId: string;
flatObjectMetadataWithFlatFieldMaps: FlatObjectMetadataWithFlatFieldMaps;
};
export const deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow = ({
flatObjectMetadataWithFlatFieldMaps,
fieldMetadataId: fieldMetadataIdToRemove,
}: DeleteFieldFromFlatObjectMetadataMapsOrThrowArgs): FlatObjectMetadataWithFlatFieldMaps => {
const flatFieldMetadataToRemove =
flatObjectMetadataWithFlatFieldMaps.fieldsById[fieldMetadataIdToRemove];
if (!isDefined(flatFieldMetadataToRemove)) {
throw new FlatObjectMetadataMapsException(
'deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow: field to delete not found',
FlatObjectMetadataMapsExceptionCode.FIELD_METADATA_NOT_FOUND,
);
}
const {
fieldIdByName,
fieldsById,
flatFieldMetadatas,
fieldIdByJoinColumnName,
} = flatObjectMetadataWithFlatFieldMaps;
const updatedFieldIdByJoinColumnName = Object.entries(
fieldIdByJoinColumnName,
).filter(([_joinColumnName, fieldId]) => fieldId !== fieldMetadataIdToRemove);
return {
...flatObjectMetadataWithFlatFieldMaps,
fieldIdByJoinColumnName: Object.fromEntries(updatedFieldIdByJoinColumnName),
fieldIdByName: removePropertiesFromRecord(fieldIdByName, [
flatFieldMetadataToRemove.name,
]),
fieldsById: removePropertiesFromRecord(fieldsById, [
fieldMetadataIdToRemove,
]),
flatFieldMetadatas: flatFieldMetadatas.filter(
(flatFieldMetadata) => flatFieldMetadata.id !== fieldMetadataIdToRemove,
),
};
};