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); }
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); }
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)); }
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 )); }
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); }
public TestProjector(ProjectorDependencies dependencies) : base(dependencies) { }
public SalesReportProjector(ProjectorDependencies dependencies, IDbContextScopeFactory <SalesReportDbContext> dbScopeFactory) : base(dependencies) { _dbScopeFactory = dbScopeFactory; }