From 197ec0eb2c841bac2ef473c56fb1eab161f957d1 Mon Sep 17 00:00:00 2001 From: Pete Richards Date: Thu, 6 Aug 2015 15:05:42 -0700 Subject: [PATCH] [Tests] Update Link Service Tests --- .../test/services/LinkServiceSpec.js | 41 ++++++++++++++----- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/platform/entanglement/test/services/LinkServiceSpec.js b/platform/entanglement/test/services/LinkServiceSpec.js index 80094db519..1d4f6670c3 100644 --- a/platform/entanglement/test/services/LinkServiceSpec.js +++ b/platform/entanglement/test/services/LinkServiceSpec.js @@ -28,7 +28,7 @@ define( '../DomainObjectFactory', '../ControlledPromise' ], - function (LinkService, domainObjectFactory) { + function (LinkService, domainObjectFactory, ControlledPromise) { "use strict"; describe("LinkService", function () { @@ -51,7 +51,6 @@ define( validate; beforeEach(function () { - object = domainObjectFactory({ name: 'object' }); @@ -119,20 +118,29 @@ define( describe("perform", function () { var object, + linkedObject, parentModel, parentObject, mutationPromise, + compositionPromise, + persistencePromise, + compositionCapability, persistenceCapability; beforeEach(function () { - mutationPromise = jasmine.createSpyObj( - 'promise', - ['then'] - ); + mutationPromise = new ControlledPromise(); + compositionPromise = new ControlledPromise(); + persistencePromise = new ControlledPromise(); persistenceCapability = jasmine.createSpyObj( 'persistenceCapability', ['persist'] ); + persistenceCapability.persist.andReturn(persistencePromise); + compositionCapability = jasmine.createSpyObj( + 'compositionCapability', + ['invoke'] + ); + compositionCapability.invoke.andReturn(compositionPromise); parentModel = { composition: [] }; @@ -146,7 +154,8 @@ define( return mutationPromise; } }, - persistence: persistenceCapability + persistence: persistenceCapability, + composition: compositionCapability } }); @@ -155,7 +164,11 @@ define( id: 'xyz' }); - parentObject.getCapability.andReturn(persistenceCapability); + linkedObject = domainObjectFactory({ + name: 'object-link', + id: 'xyz' + }); + }); @@ -172,16 +185,22 @@ define( it("persists parent", function () { linkService.perform(object, parentObject); expect(mutationPromise.then).toHaveBeenCalled(); - mutationPromise.then.calls[0].args[0](); + mutationPromise.resolve(); expect(parentObject.getCapability) .toHaveBeenCalledWith('persistence'); - expect(persistenceCapability.persist).toHaveBeenCalled(); }); it("returns object representing new link", function () { - linkService.perform(object, parentObject); + var returnPromise, whenComplete; + returnPromise = linkService.perform(object, parentObject); + whenComplete = jasmine.createSpy('whenComplete'); + returnPromise.then(whenComplete); + mutationPromise.resolve(); + persistencePromise.resolve(); + compositionPromise.resolve([linkedObject]); + expect(whenComplete).toHaveBeenCalledWith(linkedObject) }); }); });