From eb2fbcd8d03580ccfa0ba8aab427f18d69efa617 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Mon, 8 Aug 2016 12:34:46 -0700 Subject: [PATCH] [Persistence] Cover TransactingMutationListener Add test cases sufficient for line coverage of TransactingMutationListener. --- .../runs/TransactingMutationListenerSpec.js | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) 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) + ); + }); + }); + }); } );