public void OnlyUnitOfWorkEventsAreHandledIfCommitFails() { TestAggregateRoot aggregateRoot = new TestAggregateRoot(Guid.NewGuid()); aggregateRoot.ApplyEvent(domainEvent); unitOfWork .When(u => u.SaveChanges()) .Do(callInfo => { throw new InvalidOperationException(); }); try { sut.ApplyChangesAsync(aggregateRoot).Wait(); Assert.Fail("No exception thrown."); } catch (AggregateException e) { if (e.InnerException == null) { Assert.Fail("Expected inner exception of type AggregateException. No inner exception received."); } if (!(e.InnerException is InvalidOperationException)) { Assert.Fail("Expected inner exception of type AggregateException. Received '{0}'.", e.InnerException); } } unitOfWorkDomainEventHandler1.Received().ExecuteAsync(domainEvent, unitOfWork); unitOfWorkDomainEventHandler2.Received().ExecuteAsync(domainEvent, unitOfWork); unitOfWork.Received().SaveChanges(); domainEventHandler3.DidNotReceive().ExecuteAsync(domainEvent); domainEventHandler4.DidNotReceive().ExecuteAsync(domainEvent); }
public void OnlyUnitOfWorkEventsAreHandledIfCommitFails() { TestAggregateRoot aggregateRoot = new TestAggregateRoot(Guid.NewGuid()); aggregateRoot.ApplyEvent(domainEvent); unitOfWork .When(u => u.SaveChanges()) .Do(callInfo => { throw new InvalidOperationException(); }); try { sut.ApplyChanges(aggregateRoot); Assert.Fail("No exception thrown."); } catch (InvalidOperationException) { } unitOfWorkDomainEventHandler1.Received().Execute(domainEvent, unitOfWork); unitOfWorkDomainEventHandler2.Received().Execute(domainEvent, unitOfWork); unitOfWork.Received().SaveChanges(); domainEventHandler3.DidNotReceive().Execute(domainEvent); domainEventHandler4.DidNotReceive().Execute(domainEvent); }
public void OnlyUnitOfWorkEventsAreHandledIfCommitFails() { TestAggregateRoot aggregateRoot = new TestAggregateRoot(Guid.NewGuid()); aggregateRoot.ApplyEvent(domainEvent1); TestAggregateRoot2 aggregateRoot2 = new TestAggregateRoot2(Guid.NewGuid()); aggregateRoot.ApplyEvent(domainEvent2); unitOfWork .When(u => u.SaveChanges()) .Do(callInfo => { throw new OperationCanceledException(); }); bool exceptionCatched = false; try { sut.ApplyChanges(aggregateRoot, aggregateRoot2); } catch (OperationCanceledException) { exceptionCatched = true; } Assert.IsTrue(exceptionCatched); unitOfWorkDomainEventHandler1.Received().Execute(domainEvent1, unitOfWork); unitOfWorkDomainEventHandler2.Received().Execute(domainEvent1, unitOfWork); unitOfWorkDomainEventHandler1.Received().Execute(domainEvent2, unitOfWork); unitOfWorkDomainEventHandler2.Received().Execute(domainEvent2, unitOfWork); unitOfWork.Received().SaveChanges(); domainEventHandler3.DidNotReceive().Execute(domainEvent1); domainEventHandler4.DidNotReceive().Execute(domainEvent1); domainEventHandler3.DidNotReceive().Execute(domainEvent2); domainEventHandler4.DidNotReceive().Execute(domainEvent2); }