コード例 #1
0
        public EventHandlerSpecs()
        {
            _dataFixture         = new Fixture();
            _stoppingTokenSource = new CancellationTokenSource();

            _deserializeWithPrivateSetters = new JsonSerializerSettings
            {
                ContractResolver = new JsonPrivateResolver()
            };

            _eventHandlerStateStore = Substitute.For <IProjectionStore <Core.ReadModel.Projections.EventHandlerState.Projection> >();

            _eventHandlerStateStore
            .WhenForAnyArgs((IProjectionStore <Core.ReadModel.Projections.EventHandlerState.Projection> ps) => ps.Create(Arg.Any <string>(), Arg.Any <Core.ReadModel.Projections.EventHandlerState.Projection>()))
            .Do(ci => _updatedEventHandlerState = ci.ArgAt <Core.ReadModel.Projections.EventHandlerState.Projection>(1));

            _eventHandlerStateStore
            .WhenForAnyArgs((IProjectionStore <Core.ReadModel.Projections.EventHandlerState.Projection> ps) => ps.Update(Arg.Any <string>(), Arg.Any <Core.ReadModel.Projections.EventHandlerState.Projection>()))
            .Do(ci => _updatedEventHandlerState = ci.ArgAt <Core.ReadModel.Projections.EventHandlerState.Projection>(1));

            IServiceCollection services = new ServiceCollection();

            services.AddLogging();
            services.AddSingleton(_eventHandlerStateStore);
            services.AddSingleton <IProjectionBuilderRegistrar, ProjectionBuilderRegistrar>();
            services.AddSingleton <Core.ReadModel.EventStream.Handlers.EventHandler <SomeStream> >();
            services.AddSingleton <ProjectionBuilder1>();
            services.AddSingleton <ProjectionBuilder2>();
            services.AddSingleton <ProjectionBuilder3>();
            services.AddSingleton <ProjectionBuilder4>();

            _serviceProvider = services.BuildServiceProvider();

            HandledEventTracker.Reset();
        }
コード例 #2
0
 public async Task Handle(long streamPosition, SomeOtherEvent @event, CancellationToken stoppingToken)
 {
     await HandledEventTracker.HandleEvent(this.GetType(), @event, stoppingToken);
 }
コード例 #3
0
 private void ThenTheProjectionBuildersForTheOtherEventsAreNotInvoked()
 {
     HandledEventTracker.CallCount(typeof(ProjectionBuilder3)).Should().Be(0);
     HandledEventTracker.CallCount(typeof(ProjectionBuilder4)).Should().Be(0);
 }
コード例 #4
0
 private void ThenTheProjectionBuildersForOurEventAreInvoked()
 {
     HandledEventTracker.CallCount(typeof(ProjectionBuilder1)).Should().Be(1);
     HandledEventTracker.CallCount(typeof(ProjectionBuilder2)).Should().Be(1);
 }
コード例 #5
0
 private void GivenOurFirstProjectionBuilderThrowsAnException()
 {
     HandledEventTracker.ThrowExceptionOnInvocation(typeof(ProjectionBuilder1));
 }