diff --git a/platform/core/test/runs/TransactingMutationListenerSpec.js b/platform/core/test/runs/TransactingMutationListenerSpec.js index 9bf5b41f76..d523b2ecd1 100644 --- a/platform/core/test/runs/TransactingMutationListenerSpec.js +++ b/platform/core/test/runs/TransactingMutationListenerSpec.js @@ -27,7 +27,9 @@ define( describe("TransactingMutationListener", function () { var mockTopic, mockMutationTopic, - mockTransactionService; + mockTransactionService, + mockDomainObject, + mockPersistence; beforeEach(function () { mockTopic = jasmine.createSpy('topic'); @@ -40,11 +42,24 @@ define( 'addToTransaction', 'commit' ]); + mockDomainObject = jasmine.createSpyObj( + 'domainObject', + ['getId', 'getCapability', 'getModel'] + ); + mockPersistence = jasmine.createSpyObj( + 'persistence', + ['persist', 'refresh', 'persisted'] + ); mockTopic.andCallFake(function (t) { return (t === 'mutation') && mockMutationTopic; }); + mockDomainObject.getCapability.andCallFake(function (c) { + return (c === 'persistence') && mockPersistence; + }); + + mockPersistence.persisted.andReturn(true); return new TransactingMutationListener( mockTopic, @@ -58,6 +73,38 @@ define( }); + describe("when mutation occurs during a transaction", function () { + beforeEach(function () { + mockTransactionService.isActive.andReturn(true); + mockMutationTopic.listen.mostRecentCall + .args[0](mockDomainObject); + }); + + it("adds to the active transaction", function () { + expect(mockTransactionService.addToTransaction) + .toHaveBeenCalledWith( + jasmine.any(Function), + jasmine.any(Function) + ); + }); + }); + + describe("when mutation occurs outside a transaction", function () { + beforeEach(function () { + mockTransactionService.isActive.andReturn(false); + mockMutationTopic.listen.mostRecentCall + .args[0](mockDomainObject); + }); + + it("adds to the active transaction", function () { + expect(mockTransactionService.addToTransaction) + .toHaveBeenCalledWith( + jasmine.any(Function), + jasmine.any(Function) + ); + }); + }); + }); } );