Exemple #1
0
        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));
        }
Exemple #4
0
        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));
        }