From 8811f2a53e32626f5e856dfd8beba2fd0741b399 Mon Sep 17 00:00:00 2001 From: larkin Date: Thu, 11 Jun 2015 11:56:46 -0700 Subject: [PATCH] [Creation] createObject returns newObject createObject returns a promise which is resolved when the object has been persisted. The promise is resolved with an instance of the new domainObject. --- .../browse/src/creation/CreationService.js | 16 +++++++++++++-- .../test/creation/CreationServiceSpec.js | 20 ++++++++++++++++++- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/platform/commonUI/browse/src/creation/CreationService.js b/platform/commonUI/browse/src/creation/CreationService.js index 4d60e6dc9f..015573c8bd 100644 --- a/platform/commonUI/browse/src/creation/CreationService.js +++ b/platform/commonUI/browse/src/creation/CreationService.js @@ -77,7 +77,19 @@ define( return undefined; } - return parentPersistence.persist(); + return parentPersistence.persist().then(function () { + // Locate and return new Object in context of parent. + return parent + .useCapability('composition') + .then(function (children) { + var i; + for (i = 0; i < children.length; i += 1) { + if (children[i].getId() === id) { + return children[i]; + } + } + }); + }); }); } @@ -126,4 +138,4 @@ define( return CreationService; } -); \ No newline at end of file +); diff --git a/platform/commonUI/browse/test/creation/CreationServiceSpec.js b/platform/commonUI/browse/test/creation/CreationServiceSpec.js index 3280350d22..277b195eaf 100644 --- a/platform/commonUI/browse/test/creation/CreationServiceSpec.js +++ b/platform/commonUI/browse/test/creation/CreationServiceSpec.js @@ -34,8 +34,10 @@ define( mockQ, mockLog, mockParentObject, + mockNewObject, mockMutationCapability, mockPersistenceCapability, + mockCompositionCapability, mockCapabilities, creationService; @@ -69,6 +71,10 @@ define( "parentObject", [ "getId", "getCapability", "useCapability" ] ); + mockNewObject = jasmine.createSpyObj( + "newObject", + [ "getId" ] + ); mockMutationCapability = jasmine.createSpyObj( "mutation", [ "invoke" ] @@ -77,9 +83,14 @@ define( "persistence", [ "persist", "getSpace" ] ); + mockCompositionCapability = jasmine.createSpyObj( + "composition", + ["invoke"] + ); mockCapabilities = { mutation: mockMutationCapability, - persistence: mockPersistenceCapability + persistence: mockPersistenceCapability, + composition: mockCompositionCapability }; mockPersistenceService.createObject.andReturn( @@ -93,8 +104,15 @@ define( return mockCapabilities[key].invoke(value); }); + mockPersistenceCapability.persist.andReturn( + mockPromise(true) + ); + mockMutationCapability.invoke.andReturn(mockPromise(true)); mockPersistenceCapability.getSpace.andReturn("testSpace"); + mockCompositionCapability.invoke.andReturn( + mockPromise([mockNewObject]) + ); creationService = new CreationService( mockPersistenceService,