Beispiel #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);
        }
        public async Task UpdateReadmodelHandler()
        {
            EntityGuid = Guid.NewGuid();

            var queryRepository = new ReadModelRepositoryMongoDb(EventMongoDb);

            var readModelHandler = new ReadModelEventHandler <TestReadModelQuerries>(queryRepository,
                                                                                     new VersionRepositoryMongoDb(EventMongoDb), new FeedMock2());
            await readModelHandler.UpdateAsync();

            var result = await queryRepository.LoadAsync <TestReadModelQuerries>(EntityGuid.ToString());

            Assert.AreEqual(EntityGuid.ToString(), result.Value.Id);
            Assert.AreEqual(14, result.Value.Version);
            Assert.AreEqual("testName", result.Value.Name);
        }
        public async Task UpdateModel_TwoEntities()
        {
            EntityGuid  = Guid.NewGuid();
            EntityGuid2 = Guid.NewGuid();

            var queryRepository = new ReadModelRepositoryMongoDb(EventMongoDb);

            var readModelHandler = new ReadModelEventHandler <TestReadModelQuerries>(queryRepository,
                                                                                     new VersionRepositoryMongoDb(EventMongoDb), new FeedMock3());

            await readModelHandler.UpdateAsync();

            var result = await queryRepository.LoadAsync <TestReadModelQuerries>(EntityGuid.ToString());

            var result2 = await queryRepository.LoadAsync <TestReadModelQuerries>(EntityGuid2.ToString());

            Assert.AreEqual(EntityGuid.ToString(), result.Value.Id);
            Assert.AreEqual(EntityGuid2.ToString(), result2.Value.Id);
        }
        public async Task UpdateModel_VersionUpdatedExplicitly()
        {
            EntityGuid = Guid.NewGuid();

            var queryRepository = new ReadModelRepositoryMongoDb(EventMongoDb);

            var readModelHandler = new ReadModelEventHandler <TestReadModelQuerries_VerionedHandle>(
                queryRepository,
                new VersionRepositoryMongoDb(EventMongoDb),
                new FeedMockVersioned());

            await readModelHandler.UpdateAsync();

            var result = await queryRepository.LoadAsync <TestReadModelQuerries_VerionedHandle>(EntityGuid.ToString());

            Assert.AreEqual(EntityGuid.ToString(), result.Value.EntityId);
            Assert.AreEqual(12, result.Value.InnerVersion);
            Assert.AreEqual(14, result.Value.Version);
        }
        public async Task UpdateModel_EventsNotAppliedStillUpdatesVersion()
        {
            EntityGuid = Guid.NewGuid();

            var queryRepository = new ReadModelRepositoryMongoDb(EventMongoDb);

            var readModelHandler = new ReadModelEventHandler <TestReadModelQuerries_OnlyOneEventAndVersionIsCounted>(
                queryRepository,
                new VersionRepositoryMongoDb(EventMongoDb),
                new FeedMock5());

            await readModelHandler.UpdateAsync();

            var result = await queryRepository.LoadAsync <TestReadModelQuerries_OnlyOneEventAndVersionIsCounted>
                             (EntityGuid.ToString());

            Assert.AreEqual(14, result.Value.Version);
            Assert.AreEqual(null, result.Value.Name);
            Assert.AreEqual(EntityGuid.ToString(), result.Value.Id);
        }
        public async Task UpdateModel_EventsPresentThatAreNotHandleble()
        {
            EntityGuid  = Guid.NewGuid();
            EntityGuid2 = Guid.NewGuid();

            var queryRepository = new ReadModelRepositoryMongoDb(EventMongoDb);

            var readModelHandler = new ReadModelEventHandler <TestReadModelQuerries>(queryRepository, new VersionRepositoryMongoDb(EventMongoDb), new FeedMock4());

            await readModelHandler.UpdateAsync();

            var result = await queryRepository.LoadAsync <TestReadModelQuerries>(EntityGuid.ToString());

            var result2 = await queryRepository.LoadAsync <TestReadModelQuerries>(EntityGuid2.ToString());

            Assert.AreEqual(EntityGuid.ToString(), result.Value.Id);
            var condition = result2.Is <NotFound>();

            Assert.IsTrue(condition);
        }
        public async Task UpdateModel_TwoParallelReadModelHandler_SerializationBug()
        {
            EntityGuid  = Guid.NewGuid();
            EntityGuid2 = Guid.NewGuid();

            var queryRepository = new ReadModelRepositoryMongoDb(EventMongoDb);

            var readModelHandler = new ReadModelEventHandler <TestReadModelQuerries_TwoParallelFeeds1>(queryRepository, new VersionRepositoryMongoDb(EventMongoDb), new FeedMock6());

            var readModelHandler2 = new ReadModelEventHandler <TestReadModelQuerries_TwoParallelFeeds2>(queryRepository, new VersionRepositoryMongoDb(EventMongoDb), new FeedMock7());

            await readModelHandler.UpdateAsync();

            await readModelHandler2.UpdateAsync();

            var result = await queryRepository.LoadAsync <TestReadModelQuerries_TwoParallelFeeds1>(EntityGuid.ToString());

            var result2 = await queryRepository.LoadAsync <TestReadModelQuerries_TwoParallelFeeds2>(EntityGuid2.ToString());

            Assert.AreEqual(EntityGuid.ToString(), result.Value.Id);
            Assert.AreEqual(EntityGuid2.ToString(), result2.Value.IdTotallyDifferenzt);
        }