Fixed more failing tests

This commit is contained in:
Andrew Henry 2015-11-02 22:50:47 -08:00
parent 4312857fd4
commit 2f90a89065
2 changed files with 37 additions and 7 deletions

View File

@ -96,12 +96,15 @@ define(
delete modelClone.model.composition; delete modelClone.model.composition;
delete modelClone.model.location; delete modelClone.model.location;
return $q.when(originalObject.useCapability('composition')).then(function(composees){ return $q.when(originalObject.useCapability('composition')).then(function(composees){
console.log("composees: " + composees);
return (composees || []).reduce(function(promise, composee){ return (composees || []).reduce(function(promise, composee){
console.log("inside reduce");
//If the object is composed of other //If the object is composed of other
// objects, chain a promise.. // objects, chain a promise..
return promise.then(function(){ return promise.then(function(){
// ...to recursively copy it (and its children) // ...to recursively copy it (and its children)
return copy(composee, originalObject).then(function(composeeClone){ return copy(composee, originalObject).then(function(composeeClone){
console.log("Composing clone");
//Once copied, associate each cloned //Once copied, associate each cloned
// composee with its parent clone // composee with its parent clone
composeeClone.model.location = modelClone.id; composeeClone.model.location = modelClone.id;
@ -110,6 +113,7 @@ define(
}); });
});}, $q.when(undefined) });}, $q.when(undefined)
).then(function (){ ).then(function (){
console.log("Adding clone to list");
//Add the clone to the list of clones that will //Add the clone to the list of clones that will
//be returned by this function //be returned by this function
clones.push(modelClone); clones.push(modelClone);
@ -118,6 +122,7 @@ define(
}); });
}; };
return copy(domainObject, parent).then(function(){ return copy(domainObject, parent).then(function(){
console.log("Done cloning, returning");
return clones; return clones;
}); });
} }
@ -135,6 +140,7 @@ define(
var persisted = 0, var persisted = 0,
self = this; self = this;
return function(objectClones) { return function(objectClones) {
console.log("Persisting " + objectClones.length + " clones");
return self.$q.all(objectClones.map(function(clone, index){ return self.$q.all(objectClones.map(function(clone, index){
return self.persistenceService.createObject(clone.persistenceSpace, clone.id, clone.model) return self.persistenceService.createObject(clone.persistenceSpace, clone.id, clone.model)
.then(function(){ .then(function(){

View File

@ -134,7 +134,8 @@ define(
newParent, newParent,
copyResult, copyResult,
copyFinished, copyFinished,
persistObjectPromise; persistObjectPromise,
persistenceCapability;
beforeEach(function () { beforeEach(function () {
creationService = jasmine.createSpyObj( creationService = jasmine.createSpyObj(
@ -152,6 +153,15 @@ define(
persistObjectPromise = synchronousPromise(undefined); persistObjectPromise = synchronousPromise(undefined);
mockPersistenceService.createObject.andReturn(persistObjectPromise); mockPersistenceService.createObject.andReturn(persistObjectPromise);
mockPersistenceService.updateObject.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 () { describe("on domain object without composition", function () {
@ -168,11 +178,13 @@ define(
id: '456', id: '456',
model: { model: {
composition: [] composition: []
},
capabilities: {
persistence: persistenceCapability
} }
}); });
mockQ = jasmine.createSpyObj('mockQ', ['when', 'all', 'reject']); mockQ = jasmine.createSpyObj('mockQ', ['when', 'all', 'reject']);
mockQ.when.andCallFake(synchronousPromise); mockQ.when.andCallFake(synchronousPromise);
//mockQ.all.andCallFake(synchronousPromise);
mockQ.all.andCallFake(function (promises) { mockQ.all.andCallFake(function (promises) {
var result = {}; var result = {};
Object.keys(promises).forEach(function (k) { Object.keys(promises).forEach(function (k) {
@ -180,7 +192,7 @@ define(
}); });
return synchronousPromise(result); return synchronousPromise(result);
}); });
copyService = new CopyService(mockQ, creationService, policyService, mockPersistenceService); copyService = new CopyService(mockQ, creationService, policyService, mockPersistenceService);
copyResult = copyService.perform(object, newParent); copyResult = copyService.perform(object, newParent);
copyFinished = jasmine.createSpy('copyFinished'); copyFinished = jasmine.createSpy('copyFinished');
@ -198,6 +210,14 @@ define(
.toHaveBeenCalledWith(jasmine.any(Function)); .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 () { it("deep clones object model", function () {
//var newModel = creationService //var newModel = creationService
var newModel = mockPersistenceService var newModel = mockPersistenceService
@ -223,7 +243,7 @@ define(
beforeEach(function () { beforeEach(function () {
mockQ = jasmine.createSpyObj('mockQ', ['when', 'all', 'reject']); mockQ = jasmine.createSpyObj('mockQ', ['when', 'all', 'reject']);
mockQ.when.andCallFake(synchronousPromise); //mockQ.when.andCallFake(synchronousPromise);
mockQ.all.andCallFake(function (promises) { mockQ.all.andCallFake(function (promises) {
var result = {}; var result = {};
Object.keys(promises).forEach(function (k) { Object.keys(promises).forEach(function (k) {
@ -248,7 +268,7 @@ define(
['then'] ['then']
); );
compositionPromise.then.andCallFake(synchronousPromise); //compositionPromise.then.andCallFake(synchronousPromise);
compositionCapability compositionCapability
.invoke .invoke
@ -287,8 +307,12 @@ define(
createObjectPromise = synchronousPromise(newObject); createObjectPromise = synchronousPromise(newObject);
creationService.createObject.andReturn(createObjectPromise); creationService.createObject.andReturn(createObjectPromise);
copyService = new CopyService(mockQ, creationService, policyService); copyService = new CopyService(mockQ, creationService, policyService);
console.log("Before perform");
compositionPromise.then.andReturn(synchronousPromise([childObject]));
mockQ.when.andReturn(compositionPromise);
copyResult = copyService.perform(object, newParent); 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'); copyFinished = jasmine.createSpy('copyFinished');
copyResult.then(copyFinished); copyResult.then(copyFinished);
}); });
@ -307,7 +331,7 @@ define(
it("uses persistence service", function () { it("uses persistence service", function () {
expect(mockPersistenceService.createObject) expect(mockPersistenceService.createObject)
.toHaveBeenCalledWith(jasmine.any(Object), jasmine.any(String), newParent); .toHaveBeenCalledWith(persistenceCapability, jasmine.any(String), newParent);
expect(createObjectPromise.then) expect(createObjectPromise.then)
.toHaveBeenCalledWith(jasmine.any(Function)); .toHaveBeenCalledWith(jasmine.any(Function));