예제 #1
0
        public async Task MixedEventsInFeed_QuerryRepo()
        {
            var mock = new Mock <IEventFeed <QueryEventHandler <TestQ, TestEv> > >();
            IEnumerable <SubscribedDomainEventWrapper> list = new [] { new SubscribedDomainEventWrapper
                                                                       {
                                                                           DomainEvent = new TestEv(Guid.NewGuid())
                                                                       },
                                                                       new SubscribedDomainEventWrapper
                                                                       {
                                                                           DomainEvent = new TestEv2(Guid.NewGuid())
                                                                       } };

            mock.Setup(feed => feed.GetEventsAsync(It.IsAny <long>())).ReturnsAsync(list);
            var versionRepo = new Mock <IVersionRepository>();

            versionRepo.Setup(repo => repo.SaveVersion(It.IsAny <LastProcessedVersion>())).Returns(Task.CompletedTask);
            versionRepo.Setup(repo => repo.GetVersionAsync(It.IsAny <string>())).ReturnsAsync(0);

            var queryRepository = new ReadModelRepositoryMongoDb(EventMongoDb);

            var eventDelegateHandler = new QueryEventHandler <TestQ, TestEv>(queryRepository, versionRepo.Object, mock.Object);
            await eventDelegateHandler.UpdateAsync();

            var result = await queryRepository.LoadAsync <TestQ>();

            Assert.AreEqual(1, result.Value.WasCalled);
        }
예제 #2
0
 private async Task Raise(QueryEventHandler Callback, QueryEventArgs e)
 {
     if (!this.isAborted && !this.isDone && Callback != null)
     {
         try
         {
             await Callback(this, e);
         }
         catch (Exception ex)
         {
             Log.Critical(ex);
         }
     }
 }