Merge pull request #1721 from nasa/persistence-issue-1593

[persistence] uncaught in promise error fix for issue #1593
This commit is contained in:
Pete Richards 2017-11-21 14:14:35 -08:00 committed by GitHub
commit 06e93ff520
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 4 deletions

View File

@ -101,10 +101,15 @@ define(
*/ */
EditorCapability.prototype.finish = function () { EditorCapability.prototype.finish = function () {
var domainObject = this.domainObject; var domainObject = this.domainObject;
return this.transactionService.cancel().then(function () {
domainObject.getCapability("status").set("editing", false); if (this.transactionService.isActive()) {
return domainObject; return this.transactionService.cancel().then(function () {
}); domainObject.getCapability("status").set("editing", false);
return domainObject;
});
} else {
return Promise.resolve(domainObject);
}
}; };
/** /**

View File

@ -62,6 +62,7 @@ define(
); );
mockTransactionService.commit.andReturn(fastPromise()); mockTransactionService.commit.andReturn(fastPromise());
mockTransactionService.cancel.andReturn(fastPromise()); mockTransactionService.cancel.andReturn(fastPromise());
mockTransactionService.isActive = jasmine.createSpy('isActive');
mockStatusCapability = jasmine.createSpyObj( mockStatusCapability = jasmine.createSpyObj(
"statusCapability", "statusCapability",
@ -141,6 +142,7 @@ define(
describe("finish", function () { describe("finish", function () {
beforeEach(function () { beforeEach(function () {
mockTransactionService.isActive.andReturn(true);
capability.edit(); capability.edit();
capability.finish(); 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 () { describe("dirty", function () {
var model = {}; var model = {};