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
This commit is contained in:
Paul Rastoin
2025-08-06 19:27:36 +02:00
committed by GitHub
parent d45fcf43e5
commit eab72d8e67
30 changed files with 882 additions and 54 deletions
@@ -0,0 +1,41 @@
import { jestExpectToBeDefined } from 'test/utils/expect-to-be-defined.util.test';
import { FieldMetadataType } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
import { FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { isFlatFieldMetadataEntityOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util';
import { FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
type ExpectFlatFieldMetadataToBeInFlatObjectMetadataMapsArgs = {
flatObjectMetadataMaps: FlatObjectMetadataMaps;
flatFieldMetadata: FlatFieldMetadata;
};
export const expectFlatFieldMetadataToBeInFlatObjectMetadataMaps = ({
flatFieldMetadata,
flatObjectMetadataMaps,
}: ExpectFlatFieldMetadataToBeInFlatObjectMetadataMapsArgs) => {
const { objectMetadataId, id: flatFieldMetadataId } = flatFieldMetadata;
const petObject = flatObjectMetadataMaps.byId[objectMetadataId];
jestExpectToBeDefined(petObject);
if (
isFlatFieldMetadataEntityOfType(
flatFieldMetadata,
FieldMetadataType.RELATION,
) &&
isDefined(flatFieldMetadata.settings.joinColumnName)
) {
expect(
petObject.fieldIdByJoinColumnName[
flatFieldMetadata.settings.joinColumnName
],
).toEqual(flatFieldMetadataId);
}
expect(petObject.fieldsById[flatFieldMetadataId]).toBeDefined();
expect(petObject.fieldsById[flatFieldMetadataId]).toEqual(flatFieldMetadata);
expect(petObject.fieldIdByName[flatFieldMetadata.name]).toEqual(
flatFieldMetadataId,
);
};
@@ -0,0 +1,48 @@
import { jestExpectToBeDefined } from 'test/utils/expect-to-be-defined.util.test';
import { expectFlatFieldMetadataToBeInFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/__tests__/utils/expect-flat-field-metadata-to-be-in-flat-object-metadata-maps.util.test';
import { FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
import { deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-with-flat-field-maps-or-throw.util';
import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
type ExpectFlatObjectMetadataToBeInFlatObjectMetadataMapsArgs = {
flatObjectMetadataMaps: FlatObjectMetadataMaps;
flatObjectMetadata: FlatObjectMetadata;
};
export const expectFlatObjectMetadataToStrictlyBeInFlatObjectMetadataMaps = ({
flatObjectMetadataMaps,
flatObjectMetadata,
}: ExpectFlatObjectMetadataToBeInFlatObjectMetadataMapsArgs) => {
const { id: objectMetadataId } = flatObjectMetadata;
const flatObjectMetadataWithFlatFieldMaps =
flatObjectMetadataMaps.byId[objectMetadataId];
expect(
flatObjectMetadataMaps.idByNameSingular[flatObjectMetadata.nameSingular],
).toEqual(objectMetadataId);
jestExpectToBeDefined(flatObjectMetadataWithFlatFieldMaps);
const finalObjectMetadataWithFlatFieldMaps =
flatObjectMetadata.flatFieldMetadatas.reduce(
(flatObjectMetadataWithFlatFieldMaps, flatFieldMetadata) => {
expectFlatFieldMetadataToBeInFlatObjectMetadataMaps({
flatFieldMetadata,
flatObjectMetadataMaps,
});
return deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow({
fieldMetadataId: flatFieldMetadata.id,
flatObjectMetadataWithFlatFieldMaps,
});
},
flatObjectMetadataWithFlatFieldMaps,
);
expect(finalObjectMetadataWithFlatFieldMaps).toEqual({
...flatObjectMetadata,
flatFieldMetadatas: [],
fieldsById: {},
fieldIdByJoinColumnName: {},
fieldIdByName: {},
});
};
@@ -0,0 +1,5 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow should throw when field metadata parent object metadata does not exist 1`] = `"addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow field parent object metadata not found"`;
exports[`addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow should throw when field metadata to add already exist in object 1`] = `"addFlatFieldMetadataToFlatObjectMetadataWithFlatFieldMaps added flatFieldMetadata already exists"`;
@@ -0,0 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow should throw when object metadata to add already exists 1`] = `"addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow: flat object metadata to add already exists"`;
@@ -0,0 +1,5 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`deleteFieldFromFlatObjectMetadataMapsOrThrow should throw when field metadata id does not exist in object 1`] = `"deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow: field to delete not found"`;
exports[`deleteFieldFromFlatObjectMetadataMapsOrThrow should throw when object metadata id does not exist 1`] = `"deleteFieldFromFlatObjectMetadataMapsOrThrow: field metadata to delete parent flat object metadata not found"`;
@@ -0,0 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`deleteObjectFromFlatObjectMetadataMapsOrThrow should throw when object metadata to delete does not exist 1`] = `"deleteObjectFromFlatObjectMetadataMapsOrThrow: object to delete not found"`;
@@ -0,0 +1,5 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow should throw when field metadata parent object does not exist 1`] = `"deleteFieldFromFlatObjectMetadataMapsOrThrow: field metadata to delete parent flat object metadata not found"`;
exports[`replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow should throw when field metadata to replace does not exist 1`] = `"deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow: field to delete not found"`;
@@ -0,0 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow should throw when object metadata to replace does not exist 1`] = `"deleteObjectFromFlatObjectMetadataMapsOrThrow: object to delete not found"`;
@@ -0,0 +1,109 @@
import {
EachTestingContext,
eachTestingContextFilter,
} from 'twenty-shared/testing';
import { FieldMetadataType } from 'twenty-shared/types';
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
import { PET_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/pet-flat-fields.mock';
import { expectFlatFieldMetadataToBeInFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/__tests__/utils/expect-flat-field-metadata-to-be-in-flat-object-metadata-maps.util.test';
import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
import {
AddFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs,
addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow,
} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
type AddFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgsTestCase = {
input: AddFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs;
shouldThrow?: true;
};
describe('addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow', () => {
const testCases: EachTestingContext<AddFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgsTestCase>[] =
[
{
title:
'should throw when field metadata parent object metadata does not exist',
context: {
shouldThrow: true,
input: {
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
flatFieldMetadata: getFlatFieldMetadataMock({
objectMetadataId: 'non-existent',
type: FieldMetadataType.TEXT,
uniqueIdentifier: 'unique-id-1',
id: 'unique-id-1',
}),
},
},
},
{
title:
'should throw when field metadata to add already exist in object',
context: {
shouldThrow: true,
input: {
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
flatFieldMetadata: PET_FLAT_FIELDS_MOCK.species,
},
},
},
{
title: 'should add a new relation field to pet object',
context: {
input: {
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
flatFieldMetadata: getFlatFieldMetadataMock({
objectMetadataId: PET_FLAT_OBJECT_MOCK.id,
type: FieldMetadataType.RELATION,
uniqueIdentifier: 'field-metadata-id',
id: 'field-metadata-id',
settings: {
relationType: RelationType.MANY_TO_ONE,
joinColumnName: 'whateverId',
onDelete: RelationOnDeleteAction.CASCADE,
},
relationTargetObjectMetadataId: PET_FLAT_OBJECT_MOCK.id,
relationTargetFieldMetadataId: 'does-not-matter',
}),
},
},
},
];
const filteredTestCases = eachTestingContextFilter(testCases);
it.each(filteredTestCases)(
'$title',
({
context: {
input: { flatFieldMetadata, flatObjectMetadataMaps },
shouldThrow = false,
},
}) => {
if (shouldThrow) {
expect(() =>
addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
flatFieldMetadata,
flatObjectMetadataMaps,
}),
).toThrowErrorMatchingSnapshot();
} else {
const updatedFlatObjectMetadataMaps =
addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
flatFieldMetadata,
flatObjectMetadataMaps,
});
expectFlatFieldMetadataToBeInFlatObjectMetadataMaps({
flatFieldMetadata,
flatObjectMetadataMaps: updatedFlatObjectMetadataMaps,
});
}
},
);
});
@@ -0,0 +1,85 @@
import { jestExpectToBeDefined } from 'test/utils/expect-to-be-defined.util.test';
import {
EachTestingContext,
eachTestingContextFilter,
} from 'twenty-shared/testing';
import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
import { FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
import { addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-object-metadata-to-flat-object-metadata-maps-or-throw.util';
import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
import { ROCKET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/rocket-flat-object.mock';
import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
import { fromFlatObjectMetadatasToFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadatas-to-flat-object-metadata-maps.util';
type AddFlatObjectMetadataToFlatObjectMetadataMapsTestCase = {
input: {
flatObjectMetadata: FlatObjectMetadata;
flatObjectMetadataMaps: FlatObjectMetadataMaps;
};
shouldThrow?: true;
expected?: FlatObjectMetadataMaps;
};
describe('addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow', () => {
const testCases: EachTestingContext<AddFlatObjectMetadataToFlatObjectMetadataMapsTestCase>[] =
[
{
title: 'should throw when object metadata to add already exists',
context: {
input: {
flatObjectMetadata: PET_FLAT_OBJECT_MOCK,
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
},
shouldThrow: true,
},
},
{
title: 'should add object to flat object metadata maps',
context: {
input: {
flatObjectMetadata: ROCKET_FLAT_OBJECT_MOCK,
flatObjectMetadataMaps:
fromFlatObjectMetadatasToFlatObjectMetadataMaps([
PET_FLAT_OBJECT_MOCK,
]),
},
expected: fromFlatObjectMetadatasToFlatObjectMetadataMaps([
PET_FLAT_OBJECT_MOCK,
ROCKET_FLAT_OBJECT_MOCK,
]),
},
},
];
const filteredTestCases = eachTestingContextFilter(testCases);
it.each(filteredTestCases)(
'$title',
({
context: {
input: { flatObjectMetadata, flatObjectMetadataMaps },
shouldThrow = false,
expected,
},
}) => {
if (shouldThrow) {
expect(() =>
addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow({
flatObjectMetadata,
flatObjectMetadataMaps,
}),
).toThrowErrorMatchingSnapshot();
} else {
jestExpectToBeDefined(expected);
const updatedFlatObjectMetadataMaps =
addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow({
flatObjectMetadata,
flatObjectMetadataMaps,
});
expect(updatedFlatObjectMetadataMaps).toEqual(expected);
}
},
);
});
@@ -0,0 +1,113 @@
import { jestExpectToBeDefined } from 'test/utils/expect-to-be-defined.util.test';
import {
EachTestingContext,
eachTestingContextFilter,
} from 'twenty-shared/testing';
import { FieldMetadataType } from 'twenty-shared/types';
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
import { FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
import { addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
import { deleteFieldFromFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-maps-or-throw.util';
import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
type DeleteFieldFromFlatObjectMetadataMapsTestCase = {
input: {
flatObjectMetadataMaps: FlatObjectMetadataMaps | undefined;
fieldMetadataId: string;
objectMetadataId: string;
};
shouldThrow?: true;
expected?: FlatObjectMetadataMaps;
};
describe('deleteFieldFromFlatObjectMetadataMapsOrThrow', () => {
const testCases: EachTestingContext<DeleteFieldFromFlatObjectMetadataMapsTestCase>[] =
[
{
title: 'should throw when object metadata id does not exist',
context: {
input: {
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
fieldMetadataId: 'field-1',
objectMetadataId: 'non-existent',
},
shouldThrow: true,
},
},
{
title: 'should throw when field metadata id does not exist in object',
context: {
input: {
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
fieldMetadataId: 'non-existent-field',
objectMetadataId: PET_FLAT_OBJECT_MOCK.id,
},
shouldThrow: true,
},
},
{
title: 'should delete species custom relation from pet object',
context: {
input: {
flatObjectMetadataMaps:
addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
flatFieldMetadata: getFlatFieldMetadataMock({
objectMetadataId: PET_FLAT_OBJECT_MOCK.id,
type: FieldMetadataType.RELATION,
uniqueIdentifier: 'field-metadata-id',
id: 'field-metadata-id',
settings: {
relationType: RelationType.MANY_TO_ONE,
joinColumnName: 'whateverId',
onDelete: RelationOnDeleteAction.CASCADE,
},
relationTargetObjectMetadataId: PET_FLAT_OBJECT_MOCK.id,
relationTargetFieldMetadataId: 'does-not-matter',
}),
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
}),
fieldMetadataId: 'field-metadata-id',
objectMetadataId: PET_FLAT_OBJECT_MOCK.id,
},
expected: FLAT_OBJECT_METADATA_MAPS_MOCKS,
},
},
];
const filteredTestCases = eachTestingContextFilter(testCases);
it.each(filteredTestCases)(
'$title',
({
context: {
input: { fieldMetadataId, objectMetadataId, flatObjectMetadataMaps },
expected,
shouldThrow = false,
},
}) => {
jestExpectToBeDefined(flatObjectMetadataMaps);
if (shouldThrow) {
expect(() =>
deleteFieldFromFlatObjectMetadataMapsOrThrow({
fieldMetadataId,
flatObjectMetadataMaps,
objectMetadataId,
}),
).toThrowErrorMatchingSnapshot();
} else {
const result = deleteFieldFromFlatObjectMetadataMapsOrThrow({
fieldMetadataId,
flatObjectMetadataMaps,
objectMetadataId,
});
expect(result).toEqual(expected);
}
},
);
});
@@ -0,0 +1,70 @@
import {
EachTestingContext,
eachTestingContextFilter,
} from 'twenty-shared/testing';
import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
import { FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
import {
DeleteObjectFromFlatObjectMetadataMapsOrThrowArgs,
deleteObjectFromFlatObjectMetadataMapsOrThrow,
} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-object-from-flat-object-metadata-maps-or-throw.util';
import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
import { ROCKET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/rocket-flat-object.mock';
import { fromFlatObjectMetadatasToFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadatas-to-flat-object-metadata-maps.util';
type DeleteObjectFromFlatObjectMetadataMapsTestCase = {
input: DeleteObjectFromFlatObjectMetadataMapsOrThrowArgs;
shouldThrow?: true;
expected?: FlatObjectMetadataMaps;
};
describe('deleteObjectFromFlatObjectMetadataMapsOrThrow', () => {
const testCases: EachTestingContext<DeleteObjectFromFlatObjectMetadataMapsTestCase>[] =
[
{
title: 'should throw when object metadata to delete does not exist',
context: {
input: {
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
objectMetadataId: 'non-existent',
},
shouldThrow: true,
},
},
{
title: 'should delete object from flat object metadata maps',
context: {
input: {
flatObjectMetadataMaps:
fromFlatObjectMetadatasToFlatObjectMetadataMaps([
PET_FLAT_OBJECT_MOCK,
ROCKET_FLAT_OBJECT_MOCK,
]),
objectMetadataId: ROCKET_FLAT_OBJECT_MOCK.id,
},
expected: fromFlatObjectMetadatasToFlatObjectMetadataMaps([
PET_FLAT_OBJECT_MOCK,
]),
},
},
];
const filteredTestCases = eachTestingContextFilter(testCases);
it.each(filteredTestCases)(
'$title',
({ context: { input, expected, shouldThrow = false } }) => {
if (shouldThrow) {
expect(() =>
deleteObjectFromFlatObjectMetadataMapsOrThrow(input),
).toThrowErrorMatchingSnapshot();
} else {
const updatedFlatObjectMetadataMaps =
deleteObjectFromFlatObjectMetadataMapsOrThrow(input);
expect(updatedFlatObjectMetadataMaps).toEqual(expected);
}
},
);
});
@@ -0,0 +1,75 @@
import {
EachTestingContext,
eachTestingContextFilter,
} from 'twenty-shared/testing';
import { PET_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/pet-flat-fields.mock';
import { FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
import {
FindFlatFieldMetadataInFlatObjectMetadataMapsArgs,
findFlatFieldMetadataInFlatObjectMetadataMaps,
} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps.util';
import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
type FindFlatFieldMetadataInFlatObjectMetadataMapsTestCase = {
input: FindFlatFieldMetadataInFlatObjectMetadataMapsArgs;
expected?: FlatFieldMetadata;
};
describe('findFlatFieldMetadataInFlatObjectMetadataMaps', () => {
const testCases: EachTestingContext<FindFlatFieldMetadataInFlatObjectMetadataMapsTestCase>[] =
[
{
title: 'should return undefined when object metadata does not exist',
context: {
input: {
fieldMetadataId: PET_FLAT_FIELDS_MOCK.species.id,
objectMetadataId: 'non-existent',
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
},
},
},
{
title: 'should return undefined when field metadata does not exist',
context: {
input: {
fieldMetadataId: 'non-existent',
objectMetadataId: PET_FLAT_OBJECT_MOCK.id,
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
},
},
},
{
title: 'should find field metadata in flat object metadata maps',
context: {
input: {
fieldMetadataId: PET_FLAT_FIELDS_MOCK.species.id,
objectMetadataId: PET_FLAT_OBJECT_MOCK.id,
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
},
expected: PET_FLAT_FIELDS_MOCK.species,
},
},
];
const filteredTestCases = eachTestingContextFilter(testCases);
it.each(filteredTestCases)(
'$title',
({
context: {
input: { fieldMetadataId, objectMetadataId, flatObjectMetadataMaps },
expected,
},
}) => {
const findResult = findFlatFieldMetadataInFlatObjectMetadataMaps({
fieldMetadataId,
objectMetadataId,
flatObjectMetadataMaps,
});
expect(findResult).toEqual(expected);
},
);
});
@@ -0,0 +1,61 @@
import {
EachTestingContext,
eachTestingContextFilter,
} from 'twenty-shared/testing';
import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
import {
FindFlatObjectMetadataInFlatObjectMetadataMapsArgs,
findFlatObjectMetadataInFlatObjectMetadataMaps,
} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-in-flat-object-metadata-maps.util';
import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
type FindFlatObjectMetadataInFlatObjectMetadataMapsTestCase = {
input: FindFlatObjectMetadataInFlatObjectMetadataMapsArgs;
expected?: FlatObjectMetadata;
};
describe('findFlatObjectMetadataInFlatObjectMetadataMaps', () => {
const testCases: EachTestingContext<FindFlatObjectMetadataInFlatObjectMetadataMapsTestCase>[] =
[
{
title: 'should return undefined when object metadata does not exist',
context: {
input: {
objectMetadataId: 'non-existent',
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
},
},
},
{
title: 'should find object metadata in flat object metadata maps',
context: {
input: {
objectMetadataId: PET_FLAT_OBJECT_MOCK.id,
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
},
expected: PET_FLAT_OBJECT_MOCK,
},
},
];
const filteredTestCases = eachTestingContextFilter(testCases);
it.each(filteredTestCases)(
'$title',
({
context: {
input: { objectMetadataId, flatObjectMetadataMaps },
expected,
},
}) => {
const result = findFlatObjectMetadataInFlatObjectMetadataMaps({
objectMetadataId,
flatObjectMetadataMaps,
});
expect(result).toEqual(expected);
},
);
});
@@ -0,0 +1,104 @@
import {
EachTestingContext,
eachTestingContextFilter,
} from 'twenty-shared/testing';
import { FieldMetadataType } from 'twenty-shared/types';
import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
import { PET_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/pet-flat-fields.mock';
import { expectFlatFieldMetadataToBeInFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/__tests__/utils/expect-flat-field-metadata-to-be-in-flat-object-metadata-maps.util.test';
import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
import {
ReplaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs,
replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow,
} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/replace-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
import { ROCKET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/rocket-flat-object.mock';
import { fromFlatObjectMetadatasToFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadatas-to-flat-object-metadata-maps.util';
type ReplaceFlatFieldMetadataInFlatObjectMetadataMapsTestCase = {
input: ReplaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs;
shouldThrow?: true;
};
describe('replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow', () => {
const testCases: EachTestingContext<ReplaceFlatFieldMetadataInFlatObjectMetadataMapsTestCase>[] =
[
{
title: 'should throw when field metadata to replace does not exist',
context: {
input: {
flatFieldMetadata: getFlatFieldMetadataMock({
objectMetadataId: ROCKET_FLAT_OBJECT_MOCK.id,
type: FieldMetadataType.TEXT,
uniqueIdentifier: 'unique-identifier-1',
id: 'non-existent',
}),
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
},
shouldThrow: true,
},
},
{
title: 'should throw when field metadata parent object does not exist',
context: {
input: {
flatFieldMetadata: getFlatFieldMetadataMock({
...PET_FLAT_FIELDS_MOCK.species,
objectMetadataId: 'non-existent',
}),
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
},
shouldThrow: true,
},
},
{
title: 'should replace field metadata in flat object metadata maps',
context: {
input: {
flatFieldMetadata: getFlatFieldMetadataMock({
...PET_FLAT_FIELDS_MOCK.species,
name: 'not-species-anymore',
}),
flatObjectMetadataMaps:
fromFlatObjectMetadatasToFlatObjectMetadataMaps([
PET_FLAT_OBJECT_MOCK,
ROCKET_FLAT_OBJECT_MOCK,
]),
},
},
},
];
const filteredTestCases = eachTestingContextFilter(testCases);
it.each(filteredTestCases)(
'$title',
({
context: {
input: { flatFieldMetadata, flatObjectMetadataMaps },
shouldThrow = false,
},
}) => {
if (shouldThrow) {
expect(() =>
replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
flatFieldMetadata,
flatObjectMetadataMaps,
}),
).toThrowErrorMatchingSnapshot();
} else {
const updatedFlatObjectMetadataMaps =
replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
flatFieldMetadata,
flatObjectMetadataMaps,
});
expectFlatFieldMetadataToBeInFlatObjectMetadataMaps({
flatFieldMetadata,
flatObjectMetadataMaps: updatedFlatObjectMetadataMaps,
});
}
},
);
});
@@ -0,0 +1,86 @@
import {
EachTestingContext,
eachTestingContextFilter,
} from 'twenty-shared/testing';
import { expectFlatObjectMetadataToStrictlyBeInFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/__tests__/utils/expect-flat-object-metadata-to-strictly-be-in-flat-object-metadata-maps.util.test';
import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
import {
ReplaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrowArgs,
replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow,
} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/replace-flat-object-metadata-in-flat-object-metadata-maps-or-throw.util';
import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
import { ROCKET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/rocket-flat-object.mock';
import { fromFlatObjectMetadatasToFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadatas-to-flat-object-metadata-maps.util';
type ReplaceFlatObjectMetadataInFlatObjectMetadataMapsTestCase = {
input: ReplaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrowArgs;
shouldThrow?: true;
};
describe('replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow', () => {
const testCases: EachTestingContext<ReplaceFlatObjectMetadataInFlatObjectMetadataMapsTestCase>[] =
[
{
title: 'should throw when object metadata to replace does not exist',
context: {
input: {
flatObjectMetadata: {
...PET_FLAT_OBJECT_MOCK,
id: 'non-existent',
},
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
},
shouldThrow: true,
},
},
{
title: 'should replace object metadata in flat object metadata maps',
context: {
input: {
flatObjectMetadata: {
...PET_FLAT_OBJECT_MOCK,
nameSingular: 'not-pet-anymore',
},
flatObjectMetadataMaps:
fromFlatObjectMetadatasToFlatObjectMetadataMaps([
PET_FLAT_OBJECT_MOCK,
ROCKET_FLAT_OBJECT_MOCK,
]),
},
},
},
];
const filteredTestCases = eachTestingContextFilter(testCases);
it.each(filteredTestCases)(
'$title',
({
context: {
input: { flatObjectMetadata, flatObjectMetadataMaps },
shouldThrow = false,
},
}) => {
if (shouldThrow) {
expect(() =>
replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow({
flatObjectMetadata,
flatObjectMetadataMaps,
}),
).toThrowErrorMatchingSnapshot();
} else {
const updatedFlatObjectMetadataMaps =
replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow({
flatObjectMetadata,
flatObjectMetadataMaps,
});
expectFlatObjectMetadataToStrictlyBeInFlatObjectMetadataMaps({
flatObjectMetadata,
flatObjectMetadataMaps: updatedFlatObjectMetadataMaps,
});
}
},
);
});
@@ -8,13 +8,14 @@ import {
import { FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
import { addFlatFieldMetadataToFlatObjectMetadataWithFlatFieldMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-to-flat-object-metadata-with-flat-field-maps-or-throw.util';
export type AddFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs = {
flatFieldMetadata: FlatFieldMetadata;
flatObjectMetadataMaps: FlatObjectMetadataMaps;
};
export const addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow = ({
flatFieldMetadata,
flatObjectMetadataMaps,
}: {
flatFieldMetadata: FlatFieldMetadata;
flatObjectMetadataMaps: FlatObjectMetadataMaps;
}): FlatObjectMetadataMaps | undefined => {
}: AddFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs): FlatObjectMetadataMaps => {
const flatObjectMetadataWithFlatFieldMaps =
flatObjectMetadataMaps.byId[flatFieldMetadata.objectMetadataId];
@@ -12,14 +12,15 @@ import {
FlatObjectMetadataWithFlatFieldMaps,
} from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type';
type AddFlatFieldMetadataToFlatObjectMetadataWithFlatFieldMapsOrThrowArgs = {
flatFieldMetadata: FlatFieldMetadata;
flatObjectMetadataWithFlatFieldMaps: FlatObjectMetadataWithFlatFieldMaps;
};
export const addFlatFieldMetadataToFlatObjectMetadataWithFlatFieldMapsOrThrow =
({
flatFieldMetadata,
flatObjectMetadataWithFlatFieldMaps,
}: {
flatFieldMetadata: FlatFieldMetadata;
flatObjectMetadataWithFlatFieldMaps: FlatObjectMetadataWithFlatFieldMaps;
}): FlatObjectMetadataWithFlatFieldMaps => {
}: AddFlatFieldMetadataToFlatObjectMetadataWithFlatFieldMapsOrThrowArgs): FlatObjectMetadataWithFlatFieldMaps => {
if (
isDefined(
flatObjectMetadataWithFlatFieldMaps.fieldsById[flatFieldMetadata.id],
@@ -7,7 +7,7 @@ import {
import { FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
import { deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-with-flat-field-maps-or-throw.util';
type DeleteFieldFromFlatObjectMetadataMapsArgs = {
type DeleteFieldFromFlatObjectMetadataMapsOrThrowArgs = {
fieldMetadataId: string;
objectMetadataId: string;
flatObjectMetadataMaps: FlatObjectMetadataMaps;
@@ -16,13 +16,13 @@ export const deleteFieldFromFlatObjectMetadataMapsOrThrow = ({
flatObjectMetadataMaps,
fieldMetadataId,
objectMetadataId,
}: DeleteFieldFromFlatObjectMetadataMapsArgs): FlatObjectMetadataMaps => {
}: DeleteFieldFromFlatObjectMetadataMapsOrThrowArgs): FlatObjectMetadataMaps => {
const flatObjectMetadataWithFlatFieldMaps =
flatObjectMetadataMaps.byId[objectMetadataId];
if (!isDefined(flatObjectMetadataWithFlatFieldMaps)) {
throw new FlatObjectMetadataMapsException(
'deleteFieldFromFlatObjectMetadataMapsOrThrow: flat field metadata to delete parent flat object metadata not found',
'deleteFieldFromFlatObjectMetadataMapsOrThrow: field metadata to delete parent flat object metadata not found',
FlatObjectMetadataMapsExceptionCode.OBJECT_METADATA_NOT_FOUND,
);
}
@@ -6,14 +6,14 @@ import {
} 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 DeleteFieldFromFlatObjectMetadataMapsArgs = {
type DeleteFieldFromFlatObjectMetadataMapsOrThrowArgs = {
fieldMetadataId: string;
flatObjectMetadataWithFlatFieldMaps: FlatObjectMetadataWithFlatFieldMaps;
};
export const deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow = ({
flatObjectMetadataWithFlatFieldMaps,
fieldMetadataId: fieldMetadataIdToRemove,
}: DeleteFieldFromFlatObjectMetadataMapsArgs): FlatObjectMetadataWithFlatFieldMaps => {
}: DeleteFieldFromFlatObjectMetadataMapsOrThrowArgs): FlatObjectMetadataWithFlatFieldMaps => {
const flatFieldMetadataToRemove =
flatObjectMetadataWithFlatFieldMaps.fieldsById[fieldMetadataIdToRemove];
@@ -6,7 +6,7 @@ import {
} from 'src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception';
import { FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
type DeleteObjectFromFlatObjectMetadataMapsOrThrowArgs = {
export type DeleteObjectFromFlatObjectMetadataMapsOrThrowArgs = {
objectMetadataId: string;
flatObjectMetadataMaps: FlatObjectMetadataMaps;
};
@@ -3,15 +3,18 @@ import { isDefined } from 'twenty-shared/utils';
import { FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
export type FindFlatFieldMetadataInFlatObjectMetadataMapsArgs = {
objectMetadataId: string;
fieldMetadataId: string;
flatObjectMetadataMaps: FlatObjectMetadataMaps;
};
export const findFlatFieldMetadataInFlatObjectMetadataMaps = ({
flatObjectMetadataMaps,
fieldMetadataId,
objectMetadataId,
}: {
objectMetadataId: string;
fieldMetadataId: string;
flatObjectMetadataMaps: FlatObjectMetadataMaps;
}): FlatFieldMetadata | undefined => {
}: FindFlatFieldMetadataInFlatObjectMetadataMapsArgs):
| FlatFieldMetadata
| undefined => {
const flatObjectMetadataWithFlatFieldMaps =
flatObjectMetadataMaps.byId[objectMetadataId];
@@ -4,13 +4,16 @@ import { FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-
import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
import { fromFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-with-flat-field-maps-to-flat-object-metadatas.util';
export const findFlatObjectdMetadataInFlatObjectMetadataMaps = ({
flatObjectMetadataMaps,
objectMetadataId,
}: {
export type FindFlatObjectMetadataInFlatObjectMetadataMapsArgs = {
objectMetadataId: string;
flatObjectMetadataMaps: FlatObjectMetadataMaps;
}): FlatObjectMetadata | undefined => {
};
export const findFlatObjectMetadataInFlatObjectMetadataMaps = ({
flatObjectMetadataMaps,
objectMetadataId,
}: FindFlatObjectMetadataInFlatObjectMetadataMapsArgs):
| FlatObjectMetadata
| undefined => {
const flatObjectMetadataWithFlatFieldMaps =
flatObjectMetadataMaps.byId[objectMetadataId];
@@ -1,42 +0,0 @@
import { FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { FlatObjectMetadataWithFlatFieldMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type';
import { fromObjectMetadataItemWithFieldMapsToFlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-object-metadata-item-with-field-maps-to-flat-object-metadata.util';
import { ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps';
import { ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps';
type FromObjectMetadataItemWithFieldMapsToFlatObjectWithFlatFieldMetadataMapsArgs =
{
objectMetadataItemWithFieldMaps: ObjectMetadataItemWithFieldMaps;
objectMetadataMaps: ObjectMetadataMaps;
};
export const fromObjectMetadataItemWithFieldMapsToFlatObjectWithFlatFieldMetadataMaps =
({
objectMetadataItemWithFieldMaps,
objectMetadataMaps,
}: FromObjectMetadataItemWithFieldMapsToFlatObjectWithFlatFieldMetadataMapsArgs): FlatObjectMetadataWithFlatFieldMaps => {
const flatObjectMetadata =
fromObjectMetadataItemWithFieldMapsToFlatObjectMetadata({
objectMetadataItemWithFieldMaps,
objectMetadataMaps,
});
const initialAccumulator: Record<string, FlatFieldMetadata> = {};
const fieldsById = flatObjectMetadata.flatFieldMetadatas.reduce(
(acc, flatFieldMetadata) => ({
...acc,
[flatFieldMetadata.id]: flatFieldMetadata,
}),
initialAccumulator,
);
const { fieldIdByJoinColumnName, fieldIdByName } =
objectMetadataItemWithFieldMaps;
return {
...flatObjectMetadata,
fieldsById,
fieldIdByJoinColumnName,
fieldIdByName,
};
};
@@ -1,7 +1,7 @@
import { isDefined } from 'twenty-shared/utils';
import { fromObjectMetadataItemWithFieldMapsToFlatObjectWithFlatFieldMetadataMaps } from 'src/engine/metadata-modules/flat-field-metadata/utils/from-flat-field-metadata-to-flat-field-metadata-maps.util';
import { FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
import { fromObjectMetadataItemWithFieldMapsToFlatObjectWithFlatFieldMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/from-flat-field-metadata-to-flat-field-metadata-maps.util';
import { ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps';
export const fromObjectMetadataMapsToFlatObjectMetadataMaps = (
@@ -3,13 +3,14 @@ import { FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-
import { addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
import { deleteFieldFromFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-maps-or-throw.util';
export type ReplaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs = {
flatFieldMetadata: FlatFieldMetadata;
flatObjectMetadataMaps: FlatObjectMetadataMaps;
};
export const replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow = ({
flatFieldMetadata,
flatObjectMetadataMaps,
}: {
flatFieldMetadata: FlatFieldMetadata;
flatObjectMetadataMaps: FlatObjectMetadataMaps;
}): FlatObjectMetadataMaps | undefined => {
}: ReplaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs): FlatObjectMetadataMaps => {
const flatObjectMetadataMapsWithoutFlatFieldMetadataToReplace =
deleteFieldFromFlatObjectMetadataMapsOrThrow({
fieldMetadataId: flatFieldMetadata.id,
@@ -3,13 +3,14 @@ import { addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow } from 'src/engine
import { deleteObjectFromFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-object-from-flat-object-metadata-maps-or-throw.util';
import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
export const replaceFlatObjectMetadataInFlatObjectMetadataMaps = ({
flatObjectMetadata,
flatObjectMetadataMaps,
}: {
export type ReplaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrowArgs = {
flatObjectMetadata: FlatObjectMetadata;
flatObjectMetadataMaps: FlatObjectMetadataMaps;
}) => {
};
export const replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow = ({
flatObjectMetadata,
flatObjectMetadataMaps,
}: ReplaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrowArgs) => {
const flatObjectMetadataMapsWithoutFlatObjectMetadataToReplace =
deleteObjectFromFlatObjectMetadataMapsOrThrow({
flatObjectMetadataMaps,