Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        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());
        }