public void GivenAMessage_WhenAskedToProcess_ShouldTryToFindHandlersForMessageTypeHierarchy() { var expected = new[] { typeof(ICommandHandler <object>), typeof(ICommandHandler <SimpleCommandBase>), typeof(ICommandHandler <SimpleCommand>), }; var result = new List <Type>(); Resolver.Reset(); Resolver.Configure( type => null, type => { result.Add(type); return(LocateAllCommandHandlers(type)); }, o => { }); var processor = new CommandProcessorTestDataBuilder().Build(); processor.Process(new SimpleCommand()); CollectionAssert.AreEqual(expected, result); }
public void GivenAMessage_WhenAskedToProcess_ShouldInvokeCommandHandlersInCorrectSequence() { var expected = new[] { typeof(object), typeof(SimpleCommandBase), typeof(SimpleCommand), }; var processor = new CommandProcessorTestDataBuilder().Build(); processor.Process(new SimpleCommand()); _objectCommandHandler.Messages.ToList().ForEach(Console.WriteLine); CollectionAssert.AreEqual(expected, _objectCommandHandler.Messages); }
public void GivenAMessageHandledByMultipleHandlers_WhenAskedToProcess_ShouldInvokeAllCommandHandlersInCorrectSequence() { var processor = new CommandProcessorTestDataBuilder().Build(); var command = new CommandHandledByMultipleHandlers(); processor.Process(command); var expected = new[] { typeof(ObjectCommandHandler), typeof(CommandHandlerA), typeof(CommandHandlerB) }; CollectionAssert.AreEqual( expected, command.HandlersThatHandledThisMessage .Select(x => x.GetType()) .ToArray()); }
public void GivenAMessageHandledByMultipleHandlers_WhenAskedToProcessWithDifferentHandlerOrdering_ShouldInvokeAllCommandHandlersInCorrectSequence() { Conventions.SetHandlerSortingMethod((x, y) => string.Compare(y.GetType().FullName, x.GetType().FullName, StringComparison.InvariantCultureIgnoreCase)); var processor = new CommandProcessorTestDataBuilder().Build(); var command = new CommandHandledByMultipleHandlers(); processor.Process(command); var expected = new[] { typeof(ObjectCommandHandler), typeof(CommandHandlerB), typeof(CommandHandlerA) }; CollectionAssert.AreEqual( expected, command.HandlersThatHandledThisMessage .Select(x => x.GetType()) .ToArray()); }