diff --git a/platform/entanglement/src/services/CopyService.js b/platform/entanglement/src/services/CopyService.js index 42e192911d..29c6be4d10 100644 --- a/platform/entanglement/src/services/CopyService.js +++ b/platform/entanglement/src/services/CopyService.js @@ -23,8 +23,11 @@ /*global define */ define( - ["uuid"], - function (uuid) { + [ + "uuid", + "./CopyTask" + ], + function (uuid, CopyTask) { "use strict"; /** diff --git a/platform/entanglement/src/services/CopyTask.js b/platform/entanglement/src/services/CopyTask.js index c02293f22d..ca65ef18f6 100644 --- a/platform/entanglement/src/services/CopyTask.js +++ b/platform/entanglement/src/services/CopyTask.js @@ -50,7 +50,7 @@ define( clone.model.persisted = self.now(); return self.persistenceService.createObject(clone.persistenceSpace, clone.id, clone.model) .then(function(){ - return self.deferred.notify({phase: "copying", totalObjects: objectClones.length, processed: ++persisted}); + return self.deferred.notify({phase: "copying", totalObjects: objectClones.length, processed: ++self.persisted}); }); })).then(function(){ return objectClones; @@ -66,7 +66,7 @@ define( self = this; if (!this.parent.hasCapability('composition')){ - return this.deferred.reject(); + return this.$q.reject(); } return this.persistenceService @@ -145,7 +145,7 @@ define( } return copy(self.domainObject, self.parent).then(function(domainObjectClone){ - domainObjectClone.model.location = parent.getId(); + domainObjectClone.model.location = self.parent.getId(); return clones; }); }; @@ -156,11 +156,12 @@ define( this.deferred = this.$q.defer(); - return this.buildCopyPlan() + this.buildCopyPlan() .then(persistObjects) .then(addClonesToParent) - .then(this.deferred.resolve) - .catch(this.deferred.reject); + .then(this.deferred.resolve, this.deferred.reject); + + return this.deferred.promise; } return CopyTask; diff --git a/platform/entanglement/test/services/CopyServiceSpec.js b/platform/entanglement/test/services/CopyServiceSpec.js index 0cba1c9399..e696054a98 100644 --- a/platform/entanglement/test/services/CopyServiceSpec.js +++ b/platform/entanglement/test/services/CopyServiceSpec.js @@ -342,17 +342,7 @@ define( expect(copyFinished.mostRecentCall.args[0].model.modified).toBeUndefined(); expect(copyFinished.mostRecentCall.args[0].model.persisted).toBe(mockNow.now()); }); - - /** - Preserves links - */ - it ("preserves links", function() { - expect(copyFinished.mostRecentCall.args[0].model.location).toBe("testLocation"); - }); - - /** - Preserves links - */ + it ("correctly locates cloned objects", function() { expect(mockPersistenceService.createObject.calls[0].args[2].location).toEqual(mockPersistenceService.createObject.calls[1].args[1]); });