[Persistence] Update transactional persistence spec
...to account for changes to separate out transaction management, including removal of specs made obsolete (as tested behavior has been moved to TransactionManager or was already redundant to behavior from the undecorated PersistenceCapability)
This commit is contained in:
@@ -37,7 +37,7 @@ define(
|
|||||||
|
|
||||||
describe("The transactional persistence decorator", function () {
|
describe("The transactional persistence decorator", function () {
|
||||||
var mockQ,
|
var mockQ,
|
||||||
mockTransactionService,
|
mockTransactionManager,
|
||||||
mockPersistence,
|
mockPersistence,
|
||||||
mockDomainObject,
|
mockDomainObject,
|
||||||
capability;
|
capability;
|
||||||
@@ -47,13 +47,13 @@ define(
|
|||||||
mockQ.when.andCallFake(function (val) {
|
mockQ.when.andCallFake(function (val) {
|
||||||
return fastPromise(val);
|
return fastPromise(val);
|
||||||
});
|
});
|
||||||
mockTransactionService = jasmine.createSpyObj(
|
mockTransactionManager = jasmine.createSpyObj(
|
||||||
"transactionService",
|
"transactionService",
|
||||||
["isActive", "addToTransaction"]
|
["isActive", "addToTransaction", "clearTransactionsFor"]
|
||||||
);
|
);
|
||||||
mockPersistence = jasmine.createSpyObj(
|
mockPersistence = jasmine.createSpyObj(
|
||||||
"persistenceCapability",
|
"persistenceCapability",
|
||||||
["persist", "refresh"]
|
["persist", "refresh", "getSpace"]
|
||||||
);
|
);
|
||||||
mockPersistence.persist.andReturn(fastPromise());
|
mockPersistence.persist.andReturn(fastPromise());
|
||||||
mockPersistence.refresh.andReturn(fastPromise());
|
mockPersistence.refresh.andReturn(fastPromise());
|
||||||
@@ -66,49 +66,32 @@ define(
|
|||||||
);
|
);
|
||||||
mockDomainObject.getModel.andReturn({persisted: 1});
|
mockDomainObject.getModel.andReturn({persisted: 1});
|
||||||
|
|
||||||
capability = new TransactionalPersistenceCapability(mockQ, mockTransactionService, mockPersistence, mockDomainObject);
|
capability = new TransactionalPersistenceCapability(
|
||||||
|
mockQ,
|
||||||
|
mockTransactionManager,
|
||||||
|
mockPersistence,
|
||||||
|
mockDomainObject
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("if no transaction is active, passes through to persistence" +
|
it("if no transaction is active, passes through to persistence" +
|
||||||
" provider", function () {
|
" provider", function () {
|
||||||
mockTransactionService.isActive.andReturn(false);
|
mockTransactionManager.isActive.andReturn(false);
|
||||||
capability.persist();
|
capability.persist();
|
||||||
expect(mockPersistence.persist).toHaveBeenCalled();
|
expect(mockPersistence.persist).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("if transaction is active, persist and cancel calls are" +
|
it("if transaction is active, persist and cancel calls are" +
|
||||||
" queued", function () {
|
" queued", function () {
|
||||||
mockTransactionService.isActive.andReturn(true);
|
mockTransactionManager.isActive.andReturn(true);
|
||||||
capability.persist();
|
capability.persist();
|
||||||
expect(mockTransactionService.addToTransaction).toHaveBeenCalled();
|
expect(mockTransactionManager.addToTransaction).toHaveBeenCalled();
|
||||||
mockTransactionService.addToTransaction.mostRecentCall.args[0]();
|
mockTransactionManager.addToTransaction.mostRecentCall.args[1]();
|
||||||
expect(mockPersistence.persist).toHaveBeenCalled();
|
expect(mockPersistence.persist).toHaveBeenCalled();
|
||||||
mockTransactionService.addToTransaction.mostRecentCall.args[1]();
|
mockTransactionManager.addToTransaction.mostRecentCall.args[2]();
|
||||||
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 () {
|
|
||||||
mockTransactionService.isActive.andReturn(true);
|
|
||||||
capability.persist();
|
|
||||||
expect(mockTransactionService.addToTransaction).toHaveBeenCalled();
|
|
||||||
capability.persist();
|
|
||||||
expect(mockTransactionService.addToTransaction.calls.length).toBe(1);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user