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(); }
public async Task Handle(long streamPosition, SomeOtherEvent @event, CancellationToken stoppingToken) { await HandledEventTracker.HandleEvent(this.GetType(), @event, stoppingToken); }
private void ThenTheProjectionBuildersForTheOtherEventsAreNotInvoked() { HandledEventTracker.CallCount(typeof(ProjectionBuilder3)).Should().Be(0); HandledEventTracker.CallCount(typeof(ProjectionBuilder4)).Should().Be(0); }
private void ThenTheProjectionBuildersForOurEventAreInvoked() { HandledEventTracker.CallCount(typeof(ProjectionBuilder1)).Should().Be(1); HandledEventTracker.CallCount(typeof(ProjectionBuilder2)).Should().Be(1); }
private void GivenOurFirstProjectionBuilderThrowsAnException() { HandledEventTracker.ThrowExceptionOnInvocation(typeof(ProjectionBuilder1)); }