public void EventHandlersAreExecutedWithSingleEvent() { sut.PublishEvent(testEvent1); Received.InOrder(() => { domainEventHandler1.Received().Execute(testEvent1); domainEventHandler2.Received().Execute(testEvent1); asyncDomainEventHandler1.Received().ExecuteAsync(testEvent1); asyncDomainEventHandler2.Received().ExecuteAsync(testEvent1); }); domainEventHandler3.DidNotReceive().Execute(Arg.Any <AnotherTestDomainEvent>()); asyncDomainEventHandler3.DidNotReceive().ExecuteAsync(Arg.Any <AnotherTestDomainEvent>()); }
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); }