[Persistence] Cover TransactingMutationListener

Add test cases sufficient for line coverage of
TransactingMutationListener.
This commit is contained in:
Victor Woeltjen 2016-08-08 12:34:46 -07:00
parent 02f34d1c04
commit eb2fbcd8d0

View File

@ -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)
);
});
});
});
}
);