public void ThrowsIfHandlerIsAlreadyRegistered() { var manager = new InMemoryEventBusSubscriptionsManager(); manager.AddSubscription <TestEvent, TestEventHandler>(); Assert.Throws <ArgumentException>(() => manager.AddSubscription <TestEvent, TestEventHandler>()); }
public void Get_Handlers_For_Event_Should_Return_All_Handlers() { var manager = new InMemoryEventBusSubscriptionsManager(); manager.AddSubscription <TestIntegrationEvent, TestIntegrationEventHandler>(); manager.AddSubscription <TestIntegrationEvent, TestIntegrationOtherEventHandler>(); var handlers = manager.GetHandlersForEvent <TestIntegrationEvent>(); Assert.Equal(2, handlers.Count()); }
public void AddSubscription_HandlerAlreadyRegistered_ThrowArgumentException( InMemoryEventBusSubscriptionsManager sut ) { //Arrange sut.AddSubscription <TestIntegrationEvent, TestIntegrationEventHandler>(); //Act Action act = () => sut.AddSubscription <TestIntegrationEvent, TestIntegrationEventHandler>(); //Assert act.Should().Throw <ArgumentException>(); }
public static void AddIntegrationEventHandlers(this IServiceCollection services, IEnumerable <Assembly> assemblies) { List <Type> integrationEventHandlerTypes = assemblies.SelectMany(assembly => assembly.GetTypes()) .Where(x => x.GetInterfaces().Any(y => IsHandlerInterface(y))) .Where(x => x.Name.EndsWith("Handler")) .ToList(); foreach (Type integrationEventHandlerType in integrationEventHandlerTypes) { AddHandlerAsService(services, integrationEventHandlerType); } services.AddSingleton <IEventBusSubscriptionsManager>(sp => { var subManager = new InMemoryEventBusSubscriptionsManager(); foreach (Type integrationEventHandlerType in integrationEventHandlerTypes.Where(x => x.GetInterfaces().Any(y => IsIntegrationEventHandlerInterface(y)))) { IEnumerable <Type> interfaceTypes = integrationEventHandlerType.GetInterfaces().Where(y => IsHandlerInterface(y)); foreach (var interfaceType in interfaceTypes) { Type eventType = interfaceType.GetGenericArguments()[0]; subManager.AddSubscription(eventType, integrationEventHandlerType); } } return(subManager); }); }
public void IsEmptyReturnsFalseWhenNotEmpty() { var manager = new InMemoryEventBusSubscriptionsManager(); manager.AddSubscription <TestEvent, TestEventHandler>(); Assert.False(manager.IsEmpty); }
public void After_One_Event_Subscription_Should_Contain_The_Event() { var manager = new InMemoryEventBusSubscriptionsManager(); manager.AddSubscription <TestIntegrationEvent, TestIntegrationEventHandler>(); Assert.True(manager.HasSubscriptionsForEvent <TestIntegrationEvent>()); }
public void HasSubscriptionsForEventByNameReturnsTrueIfItHasSubscription() { var manager = new InMemoryEventBusSubscriptionsManager(); manager.AddSubscription <TestEvent, TestEventHandler>(); Assert.True(manager.HasSubscriptionsForEvent("TestEvent")); }
public void After_All_Subscriptions_Are_Deleted_Event_Should_No_Longer_Exists() { var manager = new InMemoryEventBusSubscriptionsManager(); manager.AddSubscription <TestIntegrationEvent, TestIntegrationEventHandler>(); manager.RemoveSubscription <TestIntegrationEvent, TestIntegrationEventHandler>(); Assert.False(manager.HasSubscriptionsForEvent <TestIntegrationEvent>()); }
public void IsEmptyAfterClear() { var manager = new InMemoryEventBusSubscriptionsManager(); manager.AddSubscription <TestEvent, TestEventHandler>(); manager.Clear(); Assert.True(manager.IsEmpty); }
public void GetEventTypeByNameReturnsCorrectType() { var manager = new InMemoryEventBusSubscriptionsManager(); manager.AddSubscription <TestEvent, TestEventHandler>(); var eventType = manager.GetEventTypeByName("TestEvent"); Assert.Equal(typeof(TestEvent), eventType); }
public void CanGetHandlersForEventByName() { var manager = new InMemoryEventBusSubscriptionsManager(); manager.AddSubscription <TestEvent, TestEventHandler>(); var handlerTypes = manager.GetHandlersForEvent("TestEvent"); Assert.Equal(typeof(TestEventHandler), handlerTypes.First()); }
public void Deleting_Last_Subscription_Should_Raise_On_Deleted_Event() { bool raised = false; var manager = new InMemoryEventBusSubscriptionsManager(); manager.OnEventRemoved += (o, e) => raised = true; manager.AddSubscription <TestIntegrationEvent, TestIntegrationEventHandler>(); manager.RemoveSubscription <TestIntegrationEvent, TestIntegrationEventHandler>(); Assert.True(raised); }
public void After_Deleting_Last_Subscription_Should_Raise_OnEventRemoved() { var manager = new InMemoryEventBusSubscriptionsManager(); var raised = false; manager.OnEventRemoved += (sender, eventArgs) => raised = true; manager.AddSubscription <TestIntegrationEvent, TestIntegrationEventHandler>(); manager.RemoveSubscription <TestIntegrationEvent, TestIntegrationEventHandler>(); Assert.True(raised); }
public void After_One_Subscription_Are_Removed_Event_Shoule_No_Longer_Exists() { var manager = new InMemoryEventBusSubscriptionsManager(); manager.AddSubscription <TestIntegrationEvent, TestIntegrationEventHandler>(); manager.RemoveSubscription <TestIntegrationEvent, TestIntegrationEventHandler>(); Assert.False(manager.HasSubscriptionsForEvent <TestIntegrationEvent>()); manager.AddDynamicSubscription <TestDynamicIntegrationEventHandler>(nameof(TestIntegrationEvent)); manager.RemoveDynamicSubscription <TestDynamicIntegrationEventHandler>(nameof(TestIntegrationEvent)); Assert.False(manager.HasSubscriptionsForEvent(nameof(TestIntegrationEvent))); }
public void AddSubscription_NoHandlersRegistered_HandlerIsRegistered( InMemoryEventBusSubscriptionsManager sut ) { //Arrange //Act sut.AddSubscription <TestIntegrationEvent, TestIntegrationEventHandler>(); //Assert sut.GetHandlersForEvent <TestIntegrationEvent>().ToList().Count.Should().Be(1); }
public void Clear_HandlersRegistered_IsEmptyTrue( InMemoryEventBusSubscriptionsManager sut ) { //Arrange sut.AddSubscription <TestIntegrationEvent, TestIntegrationEventHandler>(); //Act sut.Clear(); //Assert sut.IsEmpty.Should().BeTrue(); }
public void IsEmpty_HandlersRegistered_ReturnsFalse( InMemoryEventBusSubscriptionsManager sut ) { //Arrange sut.AddSubscription <TestIntegrationEvent, TestIntegrationEventHandler>(); //Act var result = sut.IsEmpty; //Assert result.Should().BeFalse(); }
public void RemoveDynamicSubscription_HandlerRegistered_HandlerIsRemoved( InMemoryEventBusSubscriptionsManager sut ) { //Arrange bool eventRemoved = false; sut.OnEventRemoved += new EventHandler <string>(delegate { eventRemoved = true; }); sut.AddSubscription <TestIntegrationEvent, TestIntegrationEventHandler>(); //Act sut.RemoveSubscription <TestIntegrationEvent, TestIntegrationEventHandler>(); //Assert eventRemoved.Should().BeTrue(); }