[Edit] Fixed issue with cancel action throwing an error. Fixes #979

This commit is contained in:
Andrew Henry 2016-06-01 10:41:01 +01:00
parent dc577d4c24
commit b1266abf01
2 changed files with 33 additions and 3 deletions

View File

@ -67,10 +67,17 @@ define(
} }
function onCancel() { function onCancel() {
return self.persistenceCapability.refresh().then(function (result) { if (self.domainObject.getModel().persisted) {
//Fetch clean model from persistence
return self.persistenceCapability.refresh().then(function (result) {
self.persistPending = false;
return result;
});
} else {
self.persistPending = false; self.persistPending = false;
return result; //Model is undefined in persistence, so return undefined.
}); return self.$q.when(undefined);
}
} }
if (this.transactionService.isActive()) { if (this.transactionService.isActive()) {

View File

@ -57,6 +57,15 @@ define(
); );
mockPersistence.persist.andReturn(fastPromise()); mockPersistence.persist.andReturn(fastPromise());
mockPersistence.refresh.andReturn(fastPromise()); mockPersistence.refresh.andReturn(fastPromise());
mockDomainObject = jasmine.createSpyObj(
"domainObject",
[
"getModel"
]
);
mockDomainObject.getModel.andReturn({persisted: 1});
capability = new TransactionalPersistenceCapability(mockQ, mockTransactionService, mockPersistence, mockDomainObject); capability = new TransactionalPersistenceCapability(mockQ, mockTransactionService, mockPersistence, mockDomainObject);
}); });
@ -78,6 +87,20 @@ define(
expect(mockPersistence.refresh).toHaveBeenCalled(); expect(mockPersistence.refresh).toHaveBeenCalled();
}); });
it("if transaction is active, cancel call is queued that refreshes model when appropriate", function () {
mockTransactionService.isActive.andReturn(true);
capability.persist();
expect(mockTransactionService.addToTransaction).toHaveBeenCalled();
mockDomainObject.getModel.andReturn({});
mockTransactionService.addToTransaction.mostRecentCall.args[1]();
expect(mockPersistence.refresh).not.toHaveBeenCalled();
mockDomainObject.getModel.andReturn({persisted: 1});
mockTransactionService.addToTransaction.mostRecentCall.args[1]();
expect(mockPersistence.refresh).toHaveBeenCalled();
});
it("persist call is only added to transaction once", function () { it("persist call is only added to transaction once", function () {
mockTransactionService.isActive.andReturn(true); mockTransactionService.isActive.andReturn(true);
capability.persist(); capability.persist();