public void FindsAndRegistersAllHandlersInSingleAssembly() { // Arrange var handlerRegistry = new QueryHandlerRegistry(); // Act handlerRegistry.RegisterFromAssemblies(new[] { typeof(TestQueryHandler).Assembly }); // Assert handlerRegistry.Get(typeof(TestQueryA)).ShouldNotBeNull(); handlerRegistry.Get(typeof(TestQueryB)).ShouldBeNull(); handlerRegistry.Get(typeof(TestQueryC)).ShouldBeNull(); }
public void ThrowsConfigurationExceptionWhenAddingADuplicatedRegistration() { // Arrange var handlerRegistry = new QueryHandlerRegistry(); handlerRegistry.Register <TestQueryA, object, IQueryHandler <TestQueryA, object> >(); // Act var exception = Assert.Throws <ConfigurationException>(() => handlerRegistry.Register <TestQueryA, object, IQueryHandler <TestQueryA, object> >()); // Assert exception.Message.ShouldBe($"Registry already contains an entry for {typeof(TestQueryA).Name}"); handlerRegistry.Get(typeof(TestQueryA)).ShouldNotBeNull(); handlerRegistry.Get(typeof(TestQueryB)).ShouldBeNull(); handlerRegistry.Get(typeof(TestQueryC)).ShouldBeNull(); }
public void ReturnsNullForNotRegisteredHandler() { // Arrange var handlerRegistry = new QueryHandlerRegistry(); handlerRegistry.Register <TestQueryA, object, IQueryHandler <TestQueryA, object> >(); // Act var handlerType = handlerRegistry.Get(typeof(TestQueryB)); // Assert handlerType.ShouldBeNull(); }
public void ReturnsRegisteredHandler() { // Arrange var handlerRegistry = new QueryHandlerRegistry(); handlerRegistry.Register(typeof(TestQueryA), typeof(object), typeof(IQueryHandler <TestQueryA, object>)); // Act var handlerType = handlerRegistry.Get(typeof(TestQueryA)); // Assert handlerType.ShouldBe(typeof(IQueryHandler <TestQueryA, object>)); }
public void ReturnsRegisteredHandler() { // Arrange var handlerRegistry = new QueryHandlerRegistry(); handlerRegistry.Register <TestQueryA, TestQueryA.Response, IQueryHandler <TestQueryA, TestQueryA.Response> >(); // Act var handlerType = handlerRegistry.Get(typeof(TestQueryA)); // Assert handlerType.ShouldBe(typeof(IQueryHandler <TestQueryA, TestQueryA.Response>)); }