diff --git a/platform/entanglement/src/services/CopyTask.js b/platform/entanglement/src/services/CopyTask.js index 0d672e348e..ea52beeb4b 100644 --- a/platform/entanglement/src/services/CopyTask.js +++ b/platform/entanglement/src/services/CopyTask.js @@ -117,7 +117,7 @@ define( if (Array.isArray(obj)) { obj.forEach(function (value, index) { obj[index] = idMap[value] || value; - this.rewriteIdentifiers(obj[index]); + this.rewriteIdentifiers(obj[index], idMap); }, this); } else if (obj && typeof obj === 'object') { Object.keys(obj).forEach(function (key) { diff --git a/platform/entanglement/test/services/CopyTaskSpec.js b/platform/entanglement/test/services/CopyTaskSpec.js index b76e479be0..7940ef51e4 100644 --- a/platform/entanglement/test/services/CopyTaskSpec.js +++ b/platform/entanglement/test/services/CopyTaskSpec.js @@ -105,7 +105,8 @@ define( testModel = { composition: [ ID_A, ID_B ], someObj: {}, - someArr: [ ID_A, ID_B ] + someArr: [ ID_A, ID_B ], + objArr: [{"id": ID_A}, {"id": ID_B}] }; testModel.someObj[ID_A] = "some value"; testModel.someObj.someProperty = ID_B; @@ -242,6 +243,23 @@ define( expect(domainObjectBClone.model.someObj.someProperty).toBe(childD_ID); }); + + /** + * This a bug found in testathon when testing issue #428 + */ + it(" and correctly updates child identifiers in object" + + " arrays within models ", function () { + var childA_ID = task.clones[0].getId(), + childB_ID = task.clones[1].getId(), + childC_ID = task.clones[3].getId(), + childD_ID = task.clones[4].getId(); + + expect(domainObjectClone.model.objArr[0].id).not.toBe(ID_A); + expect(domainObjectClone.model.objArr[0].id).toBe(childA_ID); + expect(domainObjectClone.model.objArr[1].id).not.toBe(ID_B); + expect(domainObjectClone.model.objArr[1].id).toBe(childB_ID); + + }); }); });