Failing morph relation creation v2 integration testing & fixes (#14253)
# Introduction closes https://github.com/twentyhq/core-team-issues/issues/1408
This commit is contained in:
+3
-6
@@ -3,7 +3,7 @@ import { FieldMetadataType } from 'twenty-shared/types';
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { findFlatFieldMetadatasRelatedToMorphRelationOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-flat-field-metadatas-related-to-morph-relation-or-throw.util';
|
||||
import { findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-relation-flat-field-metadatas-target-flat-field-metadata-or-throw.util';
|
||||
import { isFlatFieldMetadataEntityOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util';
|
||||
import { isFlatFieldMetadataOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util';
|
||||
import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
|
||||
|
||||
export const computeFlatFieldMetadataRelatedFlatFieldMetadata = ({
|
||||
@@ -14,10 +14,7 @@ export const computeFlatFieldMetadataRelatedFlatFieldMetadata = ({
|
||||
flatObjectMetadataMaps: FlatObjectMetadataMaps;
|
||||
}): FlatFieldMetadata[] => {
|
||||
if (
|
||||
isFlatFieldMetadataEntityOfType(
|
||||
flatFieldMetadata,
|
||||
FieldMetadataType.RELATION,
|
||||
)
|
||||
isFlatFieldMetadataOfType(flatFieldMetadata, FieldMetadataType.RELATION)
|
||||
) {
|
||||
return [
|
||||
findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow({
|
||||
@@ -28,7 +25,7 @@ export const computeFlatFieldMetadataRelatedFlatFieldMetadata = ({
|
||||
}
|
||||
|
||||
if (
|
||||
isFlatFieldMetadataEntityOfType(
|
||||
isFlatFieldMetadataOfType(
|
||||
flatFieldMetadata,
|
||||
FieldMetadataType.MORPH_RELATION,
|
||||
)
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
import { type MorphOrRelationFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/morph-or-relation-field-metadata-type.type';
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-relation-flat-field-metadatas-target-flat-field-metadata-or-throw.util';
|
||||
import { isFlatFieldMetadataEntityOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util';
|
||||
import { isFlatFieldMetadataOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util';
|
||||
import {
|
||||
FlatObjectMetadataMapsException,
|
||||
FlatObjectMetadataMapsExceptionCode,
|
||||
@@ -47,7 +47,7 @@ export const findFlatFieldMetadatasRelatedToMorphRelationOrThrow = ({
|
||||
return flatObjectMetadataWithFlatFieldMaps.flatFieldMetadatas.flatMap(
|
||||
(flatFieldMetadata) => {
|
||||
if (
|
||||
!isFlatFieldMetadataEntityOfType(
|
||||
!isFlatFieldMetadataOfType(
|
||||
flatFieldMetadata,
|
||||
FieldMetadataType.MORPH_RELATION,
|
||||
) ||
|
||||
|
||||
+4
-10
@@ -1,4 +1,3 @@
|
||||
import { FieldMetadataType } from 'twenty-shared/types';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import {
|
||||
@@ -7,7 +6,7 @@ import {
|
||||
} from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
|
||||
import { type MorphOrRelationFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/morph-or-relation-field-metadata-type.type';
|
||||
import { type 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 { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util';
|
||||
import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
|
||||
|
||||
export type GetRelationFlatFieldMetadatasUtilArgs = {
|
||||
@@ -18,7 +17,7 @@ export type GetRelationFlatFieldMetadatasUtilArgs = {
|
||||
export const findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow = ({
|
||||
flatObjectMetadataMaps,
|
||||
flatFieldMetadata,
|
||||
}: GetRelationFlatFieldMetadatasUtilArgs): FlatFieldMetadata<FieldMetadataType.RELATION> => {
|
||||
}: GetRelationFlatFieldMetadatasUtilArgs): FlatFieldMetadata<MorphOrRelationFieldMetadataType> => {
|
||||
const { relationTargetFieldMetadataId, relationTargetObjectMetadataId } =
|
||||
flatFieldMetadata;
|
||||
|
||||
@@ -41,14 +40,9 @@ export const findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow = ({
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
!isFlatFieldMetadataEntityOfType(
|
||||
relatedFlatFieldMetadata,
|
||||
FieldMetadataType.RELATION,
|
||||
)
|
||||
) {
|
||||
if (!isMorphOrRelationFlatFieldMetadata(relatedFlatFieldMetadata)) {
|
||||
throw new FieldMetadataException(
|
||||
`Relation target field metadata is not a relation field metadata`,
|
||||
`Relation target field metadata is not a relation or morph relation field metadata`,
|
||||
FieldMetadataExceptionCode.FIELD_METADATA_RELATION_MALFORMED,
|
||||
);
|
||||
}
|
||||
|
||||
+1
@@ -55,6 +55,7 @@ export const fromMorphRelationCreateFieldInputToFlatFieldMetadatas = async ({
|
||||
await validateMorphRelationCreationPayload({
|
||||
existingFlatObjectMetadataMaps,
|
||||
morphRelationCreationPayload: rawMorphCreationPayload,
|
||||
objectMetadataId: sourceFlatObjectMetadata.id,
|
||||
});
|
||||
|
||||
if (morphRelationCreationPayloadValidation.status === 'fail') {
|
||||
|
||||
+2
-2
@@ -3,9 +3,9 @@ import {
|
||||
type CompositeFieldMetadataType,
|
||||
} from 'src/engine/metadata-modules/field-metadata/types/composite-field-metadata-type.type';
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { isFlatFieldMetadataEntityOfTypes } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-types.util';
|
||||
import { isFlatFieldMetadataOfTypes } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-types.util';
|
||||
|
||||
export const isCompositeFlatFieldMetadata = (
|
||||
flatFieldMetadata: FlatFieldMetadata,
|
||||
): flatFieldMetadata is FlatFieldMetadata<CompositeFieldMetadataType> =>
|
||||
isFlatFieldMetadataEntityOfTypes(flatFieldMetadata, COMPOSITE_FIELD_TYPES);
|
||||
isFlatFieldMetadataOfTypes(flatFieldMetadata, COMPOSITE_FIELD_TYPES);
|
||||
|
||||
+2
-2
@@ -3,9 +3,9 @@ import {
|
||||
type EnumFieldMetadataType,
|
||||
} from 'src/engine/metadata-modules/field-metadata/types/enum-field-metadata-type.type';
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { isFlatFieldMetadataEntityOfTypes } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-types.util';
|
||||
import { isFlatFieldMetadataOfTypes } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-types.util';
|
||||
|
||||
export const isEnumFlatFieldMetadata = (
|
||||
flatFieldMetadata: FlatFieldMetadata,
|
||||
): flatFieldMetadata is FlatFieldMetadata<EnumFieldMetadataType> =>
|
||||
isFlatFieldMetadataEntityOfTypes(flatFieldMetadata, ENUM_FIELD_TYPES);
|
||||
isFlatFieldMetadataOfTypes(flatFieldMetadata, ENUM_FIELD_TYPES);
|
||||
|
||||
+2
-2
@@ -2,7 +2,7 @@ import { FieldMetadataType } from 'twenty-shared/types';
|
||||
|
||||
import { FLAT_FIELD_METADATA_JSONB_PROPERTIES } from 'src/engine/metadata-modules/flat-field-metadata/constants/flat-field-metadata-jsonb-properties.constant';
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { isFlatFieldMetadataEntityOfTypes } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-types.util';
|
||||
import { isFlatFieldMetadataOfTypes } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-types.util';
|
||||
|
||||
export const isFlatFieldMetadataJsonbProperty = ({
|
||||
flatFieldMetadata,
|
||||
@@ -12,7 +12,7 @@ export const isFlatFieldMetadataJsonbProperty = ({
|
||||
property: keyof FlatFieldMetadata;
|
||||
}): boolean => {
|
||||
if (property === 'defaultValue') {
|
||||
return isFlatFieldMetadataEntityOfTypes(flatFieldMetadata, [
|
||||
return isFlatFieldMetadataOfTypes(flatFieldMetadata, [
|
||||
FieldMetadataType.LINKS,
|
||||
FieldMetadataType.PHONES,
|
||||
FieldMetadataType.EMAILS,
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ import { type FieldMetadataType } from 'twenty-shared/types';
|
||||
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
|
||||
export function isFlatFieldMetadataEntityOfType<
|
||||
export function isFlatFieldMetadataOfType<
|
||||
Field extends FlatFieldMetadata<FieldMetadataType>,
|
||||
Type extends FieldMetadataType,
|
||||
>(
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ import { type FieldMetadataType } from 'twenty-shared/types';
|
||||
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
|
||||
export function isFlatFieldMetadataEntityOfTypes<
|
||||
export function isFlatFieldMetadataOfTypes<
|
||||
Field extends FlatFieldMetadata<FieldMetadataType>,
|
||||
Types extends FieldMetadataType[],
|
||||
>(
|
||||
|
||||
+2
-2
@@ -3,11 +3,11 @@ import {
|
||||
type MorphOrRelationFieldMetadataType,
|
||||
} from 'src/engine/metadata-modules/field-metadata/types/morph-or-relation-field-metadata-type.type';
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { isFlatFieldMetadataEntityOfTypes } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-types.util';
|
||||
import { isFlatFieldMetadataOfTypes } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-types.util';
|
||||
|
||||
export const isMorphOrRelationFlatFieldMetadata = (
|
||||
flatFieldMetadata: FlatFieldMetadata,
|
||||
): flatFieldMetadata is FlatFieldMetadata<MorphOrRelationFieldMetadataType> =>
|
||||
isFlatFieldMetadataEntityOfTypes(flatFieldMetadata, [
|
||||
isFlatFieldMetadataOfTypes(flatFieldMetadata, [
|
||||
...MORPH_OR_RELATION_FIELD_TYPES,
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user