diff --git a/packages/salesforce-adapter/src/filters/custom_object_translation.ts b/packages/salesforce-adapter/src/filters/custom_object_translation.ts index ddc7199be33..973a3a87106 100644 --- a/packages/salesforce-adapter/src/filters/custom_object_translation.ts +++ b/packages/salesforce-adapter/src/filters/custom_object_translation.ts @@ -15,7 +15,7 @@ */ import wu from 'wu' import { - Element, ElemID, findInstances, InstanceElement, + Element, ElemID, findInstances, InstanceElement, INSTANCE_ANNOTATIONS, ReferenceExpression, } from '@salto-io/adapter-api' import { collections } from '@salto-io/lowerdash' import _ from 'lodash' @@ -51,12 +51,19 @@ const filterCreator = (): FilterWith<'onFetch'> => ({ .forEach(customTranslation => { const customObjApiName = apiNameParts(customTranslation)[0] - // Change fields to reference + // Add parent annotation const customObj = apiNameToCustomObject.get(customObjApiName) + if (customObj) { + customTranslation.annotate({ + [INSTANCE_ANNOTATIONS.PARENT]: new ReferenceExpression(customObj.elemID), + }) + } + + // Change fields to reference makeArray(customTranslation.value[FIELDS]).forEach(field => { const customField = customObj?.fields[field[NAME]] if (customField) { - field[NAME] = customField.elemID + field[NAME] = new ReferenceExpression(customField.elemID) } }) @@ -65,7 +72,7 @@ const filterCreator = (): FilterWith<'onFetch'> => ({ makeArray(customTranslation.value[VALIDATION_RULES]).forEach(rule => { const ruleInstance = objRules?.find(r => _.isEqual(ruleShortName(r), rule[NAME])) if (ruleInstance) { - rule[NAME] = ruleInstance.elemID + rule[NAME] = new ReferenceExpression(ruleInstance.elemID) } }) }) diff --git a/packages/salesforce-adapter/test/filters/custom_object_translation.test.ts b/packages/salesforce-adapter/test/filters/custom_object_translation.test.ts index 7f2564fd33a..0a12c696ada 100644 --- a/packages/salesforce-adapter/test/filters/custom_object_translation.test.ts +++ b/packages/salesforce-adapter/test/filters/custom_object_translation.test.ts @@ -15,7 +15,7 @@ */ import _ from 'lodash' import { - ObjectType, InstanceElement, Field, BuiltinTypes, ElemID, + ObjectType, InstanceElement, Field, BuiltinTypes, ElemID, ReferenceExpression, } from '@salto-io/adapter-api' import filterCreator from '../../src/filters/custom_object_translation' import { @@ -70,11 +70,11 @@ describe('custom object translation filter', () => { beforeAll(async () => { const filter = filterCreator() as FilterWith<'onFetch'> const testElements = [ - _.clone(objTranslationInstance), - _.clone(customObject), - _.clone(objTranslationType), - _.clone(validationRuleType), - _.clone(validationRuleInstance), + objTranslationInstance.clone(), + customObject.clone(), + objTranslationType.clone(), + validationRuleType.clone(), + validationRuleInstance.clone(), ] await filter.onFetch(testElements) postFilter = testElements[0] as InstanceElement @@ -83,7 +83,7 @@ describe('custom object translation filter', () => { describe('fields reference', () => { it('should transform fields to reference', async () => { expect(postFilter.value.fields[0].name) - .toEqual(customObject.fields[customFieldName].elemID) + .toEqual(new ReferenceExpression(customObject.fields[customFieldName].elemID)) }) it('should keep name as is if no referenced field was found', async () => { expect(postFilter.value.fields[1].name).toBe('not-exists') @@ -93,7 +93,7 @@ describe('custom object translation filter', () => { describe('validation rules reference', () => { it('should transform validation rules to reference', async () => { expect(postFilter.value.validationRules[0].name) - .toEqual(validationRuleInstance.elemID) + .toEqual(new ReferenceExpression(validationRuleInstance.elemID)) }) it('should keep name as is if no referenced validation rules was found', async () => { expect(postFilter.value.validationRules[1].name).toBe('not-exists')