ObjectMetadataServiceV2.updateOne (#13891)

# Introduction
Last service to get migrated, `updateOne` object metadata service v2
This commit is contained in:
Paul Rastoin
2025-08-14 11:37:52 +02:00
committed by GitHub
parent 3c034c4ab4
commit ad77d2f462
42 changed files with 798 additions and 282 deletions
@@ -139,39 +139,6 @@ exports[`Workspace migration builder field actions test suite It should build an
]
`;
exports[`Workspace migration builder field actions test suite It should build an update_field action 1`] = `
[
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "update_field",
"updates": [
{
"from": "Opportunity stage",
"property": "description",
"to": "new description",
},
{
"from": "IconProgressCheck",
"property": "icon",
"to": "new icon",
},
{
"from": true,
"property": "isActive",
"to": false,
},
{
"from": "stage",
"property": "name",
"to": "new name",
},
],
"workspaceId": Any<String>,
},
]
`;
exports[`Workspace migration builder field actions test suite It should build an update_field action for a RELATION field 1`] = `
[
{
@@ -195,6 +162,50 @@ exports[`Workspace migration builder field actions test suite It should build an
]
`;
exports[`Workspace migration builder field actions test suite It should build an update_field action for custom fields 1`] = `
[
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "update_field",
"updates": [
{
"from": null,
"property": "description",
"to": "new description",
},
{
"from": null,
"property": "icon",
"to": "new icon",
},
],
"workspaceId": Any<String>,
},
]
`;
exports[`Workspace migration builder field actions test suite It should build an update_field action for standard field 1`] = `
[
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "update_field",
"updates": [
{
"from": null,
"property": "standardOverrides",
"to": {
"description": "new description",
"icon": "new icon",
},
},
],
"workspaceId": Any<String>,
},
]
`;
exports[`Workspace migration builder field actions test suite It should not infer any actions as from and to fields are identical 1`] = `[]`;
exports[`Workspace migration builder index actions test suite It should build a delete_index action 1`] = `
@@ -1633,7 +1644,7 @@ exports[`Workspace migration builder object actions test suite It should build a
]
`;
exports[`Workspace migration builder object actions test suite It should build an update_object action with all object updated fields 1`] = `
exports[`Workspace migration builder object actions test suite It should build an update_object for custom object 1`] = `
[
{
"objectMetadataId": Any<String>,
@@ -1654,4 +1665,22 @@ exports[`Workspace migration builder object actions test suite It should build a
]
`;
exports[`Workspace migration builder object actions test suite It should build an update_object for standard object 1`] = `
[
{
"objectMetadataId": Any<String>,
"type": "update_object",
"updates": [
{
"from": null,
"property": "standardOverrides",
"to": {
"description": "Updated description",
},
},
],
},
]
`;
exports[`Workspace migration builder object actions test suite It should not infer any actions as from and to are identical 1`] = `[]`;
@@ -123,7 +123,7 @@ const basicCrudTestCases: WorkspaceMigrationBuilderTestCase[] = [
},
},
{
title: 'It should build an update_field action',
title: 'It should build an update_field action for standard field',
context: {
input: {
fromFlatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
@@ -132,9 +132,29 @@ const basicCrudTestCases: WorkspaceMigrationBuilderTestCase[] = [
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
flatFieldMetadata: getFlatFieldMetadataMock({
...OPPORTUNITY_FLAT_FIELDS_MOCK.stage,
standardOverrides: {
description: 'new description',
icon: 'new icon',
},
}),
}),
},
expectedActionsTypeCounter: {
updateField: 1,
},
},
},
{
title: 'It should build an update_field action for custom fields',
context: {
input: {
fromFlatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
toFlatObjectMetadataMaps:
replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
flatFieldMetadata: getFlatFieldMetadataMock({
...PET_FLAT_FIELDS_MOCK.species,
description: 'new description',
name: 'new name',
isActive: false,
icon: 'new icon',
}),
}),
@@ -5,6 +5,7 @@ import { deleteObjectFromFlatObjectMetadataMapsOrThrow } from 'src/engine/metada
import { replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/replace-flat-object-metadata-in-flat-object-metadata-maps-or-throw.util';
import { COMPANY_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/company-flat-object.mock';
import { getFlatObjectMetadataMock } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock';
import { OPPORTUNITY_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/opportunity-flat-object.mock';
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';
@@ -13,8 +14,7 @@ import { type WorkspaceMigrationBuilderTestCase } from 'src/engine/workspace-man
export const WORKSPACE_MIGRATION_OBJECT_BUILDER_TEST_CASES: WorkspaceMigrationBuilderTestCase[] =
[
{
title:
'It should build an update_object action with all object updated fields',
title: 'It should build an update_object for custom object',
context: {
input: {
fromFlatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
@@ -34,6 +34,27 @@ export const WORKSPACE_MIGRATION_OBJECT_BUILDER_TEST_CASES: WorkspaceMigrationBu
},
},
},
{
title: 'It should build an update_object for standard object',
context: {
input: {
fromFlatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
toFlatObjectMetadataMaps:
replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow({
flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
flatObjectMetadata: getFlatObjectMetadataMock({
...OPPORTUNITY_FLAT_OBJECT_MOCK,
standardOverrides: {
description: 'Updated description',
},
}),
}),
},
expectedActionsTypeCounter: {
updateObject: 1,
},
},
},
{
title: 'It should build a create_object action',
context: {
@@ -1,8 +1,8 @@
import { type FromTo } from 'twenty-shared/types';
import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { type FlatFieldMetadataPropertiesToCompare } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata-properties-to-compare.type';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { type FlatFieldMetadataPropertiesToCompare } from 'src/engine/metadata-modules/flat-field-metadata/utils/compare-two-flat-field-metadata.util';
export type CreateFieldAction = {
type: 'create_field';
@@ -1,7 +1,7 @@
import { type FromTo } from 'twenty-shared/types';
import { type FlatObjectMetadataPropertiesToCompare } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata-properties-to-compare.type';
import { type FlatObjectMetadataWithoutFields } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
import { type FlatObjectMetadataPropertiesToCompare } from 'src/engine/metadata-modules/flat-object-metadata/utils/compare-two-flat-object-metadata.util';
import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { type CreateFieldAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-field-action-v2';