public async Task HandleWithEventsShouldCallAppendAsync() { //Arrange var mockEventStoreRepository = new Mock <IEventStoreRepository <AggregateRoot <Guid> > >(); mockEventStoreRepository.Setup(e => e.AppendAsync(It.IsAny <EventStore>())) .Returns(Task.FromResult(true)) .Verifiable(); var mockEventSerializer = new Mock <IEventSerializer>(); var @event = new SpeechCreatedEvent(It.IsAny <Guid>(), It.IsAny <Title>(), It.IsAny <UrlValue>(), It.IsAny <Description>(), It.IsAny <SpeechType>()); long version = 0; //Act var sut = new EventSourcingHandler <AggregateRoot <Guid> >(mockEventStoreRepository.Object, mockEventSerializer.Object); await sut.Handle(@event, version); //Assert mockEventStoreRepository.Verify(m => m.AppendAsync(It.IsAny <EventStore>()), Times.Once, "AppendAsync must be called only once"); }
public async Task HandleWithEventsShouldCallCommitAsync() { //Arrange Mock <IUnitOfWork> moqUnitOfWork = new Mock <IUnitOfWork>(); moqUnitOfWork.Setup(m => m.Commit()).Verifiable(); var mockEventStoreRepository = new Mock <IEventStoreRepository>(); mockEventStoreRepository.Setup(e => e.AppendAsync(It.IsAny <EventStore>())) .Returns(Task.FromResult(true)) .Verifiable(); var mockEventSerializer = new Mock <IEventSerializer>(); var @event = new SpeechCreatedEvent(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <SpeechTypeEnum>()); long version = 0; var moqSignalRPublisher = new Mock <ISignalRPublisher>(); moqSignalRPublisher.Setup(p => p.SubscribeAsync(It.IsAny <string>())).Returns(Task.CompletedTask); moqSignalRPublisher.Setup(p => p.PublishAsync(It.IsAny <string>(), It.IsAny <EventStore>())).Returns(Task.CompletedTask); //Act var sut = new EventSourcingHandler(moqUnitOfWork.Object, mockEventStoreRepository.Object, mockEventSerializer.Object, moqSignalRPublisher.Object); await sut.Handle(@event, version); //Assert // Verify that SaveChanges is called moqUnitOfWork.Verify(m => m.Commit(), Times.Once, "Commit must be called only once"); }
public async Task HandleWithNullEventsShouldRaiseEventNullException() { //Arrange var mockEventStoreRepository = new Mock <IEventStoreRepository>(); Mock <IUnitOfWork> moqUnitOfWork = new Mock <IUnitOfWork>(); var mockEventSerializer = new Mock <IEventSerializer>(); long version = 0; //Act //Assert var sut = new EventSourcingHandler(moqUnitOfWork.Object, mockEventStoreRepository.Object, mockEventSerializer.Object, It.IsAny <ISignalRPublisher>()); await Assert.ThrowsAsync <EventNullException>(() => sut.Handle(null, version)); }
public async Task HandleWithNullEventsShouldRaiseEventNullException() { //Arrange var mockEventStoreRepository = new Mock <IEventStoreRepository <AggregateRoot <Guid> > >(); mockEventStoreRepository.Setup(e => e.AppendAsync(It.IsAny <EventStore>())) .Verifiable(); var mockEventSerializer = new Mock <IEventSerializer>(); long version = 0; //Act //Assert var sut = new EventSourcingHandler <AggregateRoot <Guid> >(mockEventStoreRepository.Object, mockEventSerializer.Object); await Assert.ThrowsAsync <EventNullException>(() => sut.Handle(null, version)); }