From 2f90a89065ab9059d5f888f0869832e7feed6326 Mon Sep 17 00:00:00 2001 From: Andrew Henry Date: Mon, 2 Nov 2015 22:50:47 -0800 Subject: [PATCH] Fixed more failing tests --- .../entanglement/src/services/CopyService.js | 6 +++ .../test/services/CopyServiceSpec.js | 38 +++++++++++++++---- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/platform/entanglement/src/services/CopyService.js b/platform/entanglement/src/services/CopyService.js index 829eba1fe9..da8339e965 100644 --- a/platform/entanglement/src/services/CopyService.js +++ b/platform/entanglement/src/services/CopyService.js @@ -96,12 +96,15 @@ define( delete modelClone.model.composition; delete modelClone.model.location; return $q.when(originalObject.useCapability('composition')).then(function(composees){ + console.log("composees: " + composees); return (composees || []).reduce(function(promise, composee){ + console.log("inside reduce"); //If the object is composed of other // objects, chain a promise.. return promise.then(function(){ // ...to recursively copy it (and its children) return copy(composee, originalObject).then(function(composeeClone){ + console.log("Composing clone"); //Once copied, associate each cloned // composee with its parent clone composeeClone.model.location = modelClone.id; @@ -110,6 +113,7 @@ define( }); });}, $q.when(undefined) ).then(function (){ + console.log("Adding clone to list"); //Add the clone to the list of clones that will //be returned by this function clones.push(modelClone); @@ -118,6 +122,7 @@ define( }); }; return copy(domainObject, parent).then(function(){ + console.log("Done cloning, returning"); return clones; }); } @@ -135,6 +140,7 @@ define( var persisted = 0, self = this; return function(objectClones) { + console.log("Persisting " + objectClones.length + " clones"); return self.$q.all(objectClones.map(function(clone, index){ return self.persistenceService.createObject(clone.persistenceSpace, clone.id, clone.model) .then(function(){ diff --git a/platform/entanglement/test/services/CopyServiceSpec.js b/platform/entanglement/test/services/CopyServiceSpec.js index b8086d9092..c85f689c79 100644 --- a/platform/entanglement/test/services/CopyServiceSpec.js +++ b/platform/entanglement/test/services/CopyServiceSpec.js @@ -134,7 +134,8 @@ define( newParent, copyResult, copyFinished, - persistObjectPromise; + persistObjectPromise, + persistenceCapability; beforeEach(function () { creationService = jasmine.createSpyObj( @@ -152,6 +153,15 @@ define( persistObjectPromise = synchronousPromise(undefined); mockPersistenceService.createObject.andReturn(persistObjectPromise); mockPersistenceService.updateObject.andReturn(persistObjectPromise); + + persistenceCapability = jasmine.createSpyObj( + "persistence", + [ "persist", "getSpace" ] + ); + + persistenceCapability.persist.andReturn(persistObjectPromise); + persistenceCapability.getSpace.andReturn("testSpace"); + }); describe("on domain object without composition", function () { @@ -168,11 +178,13 @@ define( id: '456', model: { composition: [] + }, + capabilities: { + persistence: persistenceCapability } }); mockQ = jasmine.createSpyObj('mockQ', ['when', 'all', 'reject']); mockQ.when.andCallFake(synchronousPromise); - //mockQ.all.andCallFake(synchronousPromise); mockQ.all.andCallFake(function (promises) { var result = {}; Object.keys(promises).forEach(function (k) { @@ -180,7 +192,7 @@ define( }); return synchronousPromise(result); }); - + copyService = new CopyService(mockQ, creationService, policyService, mockPersistenceService); copyResult = copyService.perform(object, newParent); copyFinished = jasmine.createSpy('copyFinished'); @@ -198,6 +210,14 @@ define( .toHaveBeenCalledWith(jasmine.any(Function)); });*/ + it("uses persistence service", function () { + expect(mockPersistenceService.createObject) + .toHaveBeenCalledWith(persistenceCapability, jasmine.any(String), object.getModel()); + + expect(persistObjectPromise.then) + .toHaveBeenCalledWith(jasmine.any(Function)); + }); + it("deep clones object model", function () { //var newModel = creationService var newModel = mockPersistenceService @@ -223,7 +243,7 @@ define( beforeEach(function () { mockQ = jasmine.createSpyObj('mockQ', ['when', 'all', 'reject']); - mockQ.when.andCallFake(synchronousPromise); + //mockQ.when.andCallFake(synchronousPromise); mockQ.all.andCallFake(function (promises) { var result = {}; Object.keys(promises).forEach(function (k) { @@ -248,7 +268,7 @@ define( ['then'] ); - compositionPromise.then.andCallFake(synchronousPromise); + //compositionPromise.then.andCallFake(synchronousPromise); compositionCapability .invoke @@ -287,8 +307,12 @@ define( createObjectPromise = synchronousPromise(newObject); creationService.createObject.andReturn(createObjectPromise); copyService = new CopyService(mockQ, creationService, policyService); + console.log("Before perform"); + compositionPromise.then.andReturn(synchronousPromise([childObject])); + mockQ.when.andReturn(compositionPromise); copyResult = copyService.perform(object, newParent); - compositionPromise.then.mostRecentCall.args[0]([childObject]); + console.log("After perform"); + //compositionPromise.then.mostRecentCall.args[0]([childObject]); copyFinished = jasmine.createSpy('copyFinished'); copyResult.then(copyFinished); }); @@ -307,7 +331,7 @@ define( it("uses persistence service", function () { expect(mockPersistenceService.createObject) - .toHaveBeenCalledWith(jasmine.any(Object), jasmine.any(String), newParent); + .toHaveBeenCalledWith(persistenceCapability, jasmine.any(String), newParent); expect(createObjectPromise.then) .toHaveBeenCalledWith(jasmine.any(Function));