From 550e7a15e6de0d4fbe90a920a0ef541ff2d9c8a2 Mon Sep 17 00:00:00 2001 From: Deep Tailor Date: Tue, 21 Nov 2017 11:51:46 -0800 Subject: [PATCH] [persistence] fix for issue #1593 prevent EditorCapability#finish from calling transactionservice#cancel when transactionService was not active - leading to console error everytime user would leave edit mode Add tests for changes made and also to check for return type in either case (isActive or not) --- .../edit/src/capabilities/EditorCapability.js | 13 +++++++++---- .../test/capabilities/EditorCapabilitySpec.js | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/platform/commonUI/edit/src/capabilities/EditorCapability.js b/platform/commonUI/edit/src/capabilities/EditorCapability.js index 28532a1a1d..d18404dd34 100644 --- a/platform/commonUI/edit/src/capabilities/EditorCapability.js +++ b/platform/commonUI/edit/src/capabilities/EditorCapability.js @@ -101,10 +101,15 @@ define( */ EditorCapability.prototype.finish = function () { var domainObject = this.domainObject; - return this.transactionService.cancel().then(function () { - domainObject.getCapability("status").set("editing", false); - return domainObject; - }); + + if (this.transactionService.isActive()) { + return this.transactionService.cancel().then(function () { + domainObject.getCapability("status").set("editing", false); + return domainObject; + }); + } else { + return Promise.resolve(domainObject); + } }; /** diff --git a/platform/commonUI/edit/test/capabilities/EditorCapabilitySpec.js b/platform/commonUI/edit/test/capabilities/EditorCapabilitySpec.js index 1c88ed9af0..33878ab6a3 100644 --- a/platform/commonUI/edit/test/capabilities/EditorCapabilitySpec.js +++ b/platform/commonUI/edit/test/capabilities/EditorCapabilitySpec.js @@ -62,6 +62,7 @@ define( ); mockTransactionService.commit.andReturn(fastPromise()); mockTransactionService.cancel.andReturn(fastPromise()); + mockTransactionService.isActive = jasmine.createSpy('isActive'); mockStatusCapability = jasmine.createSpyObj( "statusCapability", @@ -141,6 +142,7 @@ define( describe("finish", function () { beforeEach(function () { + mockTransactionService.isActive.andReturn(true); capability.edit(); capability.finish(); }); @@ -152,6 +154,23 @@ define( }); }); + describe("finish", function () { + beforeEach(function () { + mockTransactionService.isActive.andReturn(false); + capability.edit(); + }); + + it("does not cancel transaction when transaction is not active", function () { + capability.finish(); + expect(mockTransactionService.cancel).not.toHaveBeenCalled(); + }); + + it("returns a promise", function () { + expect(capability.finish() instanceof Promise).toBe(true); + }); + + }); + describe("dirty", function () { var model = {};