Пример #1
0
        public async Task invoke_business_event_handler()
        {
            var mockSubFactory = new Mock <ISubscriberFactory>();
            var businessEvent  = new TestEvent();
            var streamId       = "s";
            var position       = 5;
            var subEvent       = new SubscriberEvent(null, streamId, position, null, businessEvent);
            var dependencies   = new ProjectorDependencies(null, mockSubFactory.Object, null, null, null, null, null);
            var projector      = new TestProjector(dependencies);
            var token          = CancellationToken.None;
            var called         = false;

            projector.MockBusinessEventHandler = (pStreamId, pPosition, pEvent, pToken) =>
            {
                Assert.Equal(streamId, pStreamId);
                Assert.Equal(position, pPosition);
                Assert.Equal(businessEvent, pEvent);
                Assert.Equal(token, pToken);
                called = true;
                return(Task.CompletedTask);
            };

            await projector.HandleSubscriberEventAsync(subEvent, token);

            Assert.True(called);
        }
Пример #2
0
        private static IProjector BuildProjector <TProjector>(IServiceProvider sp, IConfiguration config)
            where TProjector : IProjector
        {
            var sharedSettings    = ProjectorsSettings.Get(config);
            var projectorSettings = ProjectorSettings.Get(config, typeof(TProjector).Name);
            var subFactoryOptions = GetSubscriberFactoryOptions(sharedSettings);

            var logger              = sp.GetRequiredService <IStandardLogger <TProjector> >();
            var subscriberFactory   = sp.GetRequiredService <ISubscriberFactory>();
            var streamClientFactory = sp.GetRequiredService <IStreamClientFactory>();
            var streamStateRepo     = new StreamStateRepo(logger, projectorSettings.StreamStateBasePath);
            var resolver            = new AllBusinessEventsResolver(logger);

            var projectorType = typeof(TProjector);

            var baseDependencies = new ProjectorDependencies(logger, subscriberFactory, subFactoryOptions, streamClientFactory, streamStateRepo, resolver, MapSubscriptionStreams(sharedSettings.SubscriptionStreams));

            if (projectorType == typeof(Projections.EmailReport.EmailReportProjector))
            {
                return(new Projections.EmailReport.EmailReportProjector(baseDependencies, sp.GetRequiredService <IDbContextScopeFactory <Projections.EmailReport.EmailReportDb.EmailReportDbContext> >()));
            }

            if (projectorType == typeof(Projections.SalesReport.SalesReportProjector))
            {
                return(new Projections.SalesReport.SalesReportProjector(baseDependencies, sp.GetRequiredService <IDbContextScopeFactory <Projections.SalesReport.SalesReportDb.SalesReportDbContext> >()));
            }

            return(null);
        }
Пример #3
0
        public async Task subscribe_when_run()
        {
            var mockSubFactory = new Mock <ISubscriberFactory>();
            var mockSubscriber = new Mock <ISubscriber>();

            mockSubFactory.Setup(x => x.Create(
                                     It.IsAny <IStandardLogger>(), It.IsAny <IStreamClientFactory>(), It.IsAny <IStreamStateRepo>(),
                                     It.IsAny <IBusinessEventResolver>(), It.IsAny <ISubscriberEventSorter>(), It.IsAny <ISubscriberEventHandler>(),
                                     It.IsAny <SubscriberFactoryOptions>(), It.IsAny <IList <SubscriptionStreamId> >()
                                     )).Returns(mockSubscriber.Object);

            var dependencies = new ProjectorDependencies(null, mockSubFactory.Object, null, null, null, null, null);
            var projector    = new TestProjector(dependencies);

            var tokenSource = new CancellationTokenSource(5000);

            await projector.RunAsync(tokenSource.Token);

            Assert.False(tokenSource.IsCancellationRequested);

            mockSubscriber.Verify(x => x.SubscribeAsync(tokenSource.Token));
        }
Пример #4
0
        public void create_subscriber_when_construct()
        {
            var mockLogger              = new Mock <IStandardLogger>();
            var mockSubFactory          = new Mock <ISubscriberFactory>();
            var subFactoryOptions       = new SubscriberFactoryOptions(0, 0, 0, 0);
            var mockStreamClientFactory = new Mock <IStreamClientFactory>();
            var mockStreamStateRepo     = new Mock <IStreamStateRepo>();
            var mockEventResolver       = new Mock <IBusinessEventResolver>();
            var streamIds = new List <SubscriptionStreamId>();

            var dependencies = new ProjectorDependencies(
                mockLogger.Object, mockSubFactory.Object, subFactoryOptions, mockStreamClientFactory.Object, mockStreamStateRepo.Object,
                mockEventResolver.Object, streamIds
                );

            var projector = new TestProjector(dependencies);

            mockSubFactory.Verify(x => x.Create(
                                      mockLogger.Object, mockStreamClientFactory.Object, mockStreamStateRepo.Object,
                                      mockEventResolver.Object, projector, projector, subFactoryOptions, streamIds
                                      ));
        }
Пример #5
0
        public void construct()
        {
            var mockLogger              = new Mock <IStandardLogger>();
            var mockSubFactory          = new Mock <ISubscriberFactory>();
            var subFactoryOptions       = new SubscriberFactoryOptions(0, 0, 0, 0);
            var mockStreamClientFactory = new Mock <IStreamClientFactory>();
            var mockStreamStateRepo     = new Mock <IStreamStateRepo>();
            var mockEventResolver       = new Mock <IBusinessEventResolver>();
            var streamIds = new List <SubscriptionStreamId>();

            var dependencies = new ProjectorDependencies(
                mockLogger.Object, mockSubFactory.Object, subFactoryOptions, mockStreamClientFactory.Object, mockStreamStateRepo.Object,
                mockEventResolver.Object, streamIds
                );

            Assert.Equal(mockLogger.Object, dependencies.Logger);
            Assert.Equal(mockSubFactory.Object, dependencies.SubscriberFactory);
            Assert.Equal(subFactoryOptions, dependencies.SubscriberFactoryOptions);
            Assert.Equal(mockStreamClientFactory.Object, dependencies.StreamClientFactory);
            Assert.Equal(mockStreamStateRepo.Object, dependencies.StreamStateRepo);
            Assert.Equal(mockEventResolver.Object, dependencies.EventResolver);
            Assert.Equal(streamIds, dependencies.SubscriptionStreamIds);
        }
Пример #6
0
 public TestProjector(ProjectorDependencies dependencies) : base(dependencies)
 {
 }
 public SalesReportProjector(ProjectorDependencies dependencies, IDbContextScopeFactory <SalesReportDbContext> dbScopeFactory) : base(dependencies)
 {
     _dbScopeFactory = dbScopeFactory;
 }