diff --git a/openmetadata-ui/src/main/resources/ui/playwright/utils/customProperty.ts b/openmetadata-ui/src/main/resources/ui/playwright/utils/customProperty.ts index fea5a8e653e9..994b61e70e10 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/utils/customProperty.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/utils/customProperty.ts @@ -447,79 +447,87 @@ export const createCustomPropertyForEntity = async ( }; for (const item of propertyList) { + const customPropertyName = `pwCustomProperty${uuid()}`; + const payload = { + name: customPropertyName, + description: customPropertyName, + propertyType: { + id: item.id ?? '', + type: 'type', + }, + ...(item.name === 'enum' + ? { + customPropertyConfig: { + config: { + multiSelect: true, + values: ['small', 'medium', 'large'], + }, + }, + } + : {}), + ...(['entityReference', 'entityReferenceList'].includes(item.name) + ? { + customPropertyConfig: { + config: ['user', 'team'], + }, + } + : {}), + + ...(item.name === 'time-cp' + ? { + customPropertyConfig: { + config: 'HH:mm:ss', + }, + } + : {}), + + ...(item.name === 'date-cp' + ? { + customPropertyConfig: { + config: 'yyyy-MM-dd', + }, + } + : {}), + + ...(item.name === 'dateTime-cp' + ? { + customPropertyConfig: { + config: 'yyyy-MM-dd HH:mm:ss', + }, + } + : {}), + ...(item.name === 'table-cp' + ? { + customPropertyConfig: { + config: { + columns: ['pw-column1', 'pw-column2'], + }, + }, + } + : {}), + }; const customPropertyResponse = await apiContext.put( `/api/v1/metadata/types/${entitySchema.id}`, { - data: { - name: `pwCustomProperty${uuid()}`, - description: `pwCustomProperty${uuid()}`, - propertyType: { - id: item.id ?? '', - type: 'type', - }, - ...(item.name === 'enum' - ? { - customPropertyConfig: { - config: { - multiSelect: true, - values: ['small', 'medium', 'large'], - }, - }, - } - : {}), - ...(['entityReference', 'entityReferenceList'].includes(item.name) - ? { - customPropertyConfig: { - config: ['user', 'team'], - }, - } - : {}), - - ...(item.name === 'time-cp' - ? { - customPropertyConfig: { - config: 'HH:mm:ss', - }, - } - : {}), - - ...(item.name === 'date-cp' - ? { - customPropertyConfig: { - config: 'yyyy-MM-dd', - }, - } - : {}), - - ...(item.name === 'dateTime-cp' - ? { - customPropertyConfig: { - config: 'yyyy-MM-dd HH:mm:ss', - }, - } - : {}), - ...(item.name === 'table-cp' - ? { - customPropertyConfig: { - config: { - columns: ['pw-column1', 'pw-column2'], - }, - }, - } - : {}), - }, + data: payload, } ); const customProperty = await customPropertyResponse.json(); // Process the custom properties - customProperties = customProperty.customProperties.reduce( + const newProperties = customProperty.customProperties.reduce( ( prev: Record, - curr: Record> + curr: Record | string> ) => { - const propertyTypeName = curr.propertyType.name; + // only process the custom properties which are created via payload + if (curr.name !== customPropertyName) { + return prev; + } + + const propertyTypeName = (curr.propertyType as Record) + .name; return { ...prev, @@ -531,6 +539,8 @@ export const createCustomPropertyForEntity = async ( }, {} ); + + customProperties = { ...customProperties, ...newProperties }; } return { customProperties, cleanupUser };