@Test public void chainWithoutOutputChannelButLastHandlerDoesNotProduceReplies() { List<MessageHandler> handlers = new ArrayList<MessageHandler>(); handlers.add(producer1); handlers.add(producer2); handlers.add(handler3); MessageHandlerChain chain = new MessageHandlerChain(); chain.setBeanName("testChain"); chain.setHandlers(handlers); chain.setBeanFactory(mock(BeanFactory.class)); chain.handleMessage(message); }
@Test public void chainWithOutputChannel() { List<MessageHandler> handlers = new ArrayList<MessageHandler>(); handlers.add(producer1); handlers.add(producer2); handlers.add(producer3); MessageHandlerChain chain = new MessageHandlerChain(); chain.setBeanName("testChain"); chain.setHandlers(handlers); chain.setOutputChannel(outputChannel); chain.setBeanFactory(mock(BeanFactory.class)); chain.handleMessage(message); Mockito.verify(outputChannel).send(Mockito.eq(message)); }
@Test public void chainForwardsToReplyChannel() { Message<String> message = MessageBuilder.withPayload("test").setReplyChannel(outputChannel).build(); List<MessageHandler> handlers = new ArrayList<MessageHandler>(); handlers.add(producer1); handlers.add(producer2); handlers.add(producer3); MessageHandlerChain chain = new MessageHandlerChain(); chain.setBeanName("testChain"); chain.setHandlers(handlers); chain.setBeanFactory(mock(BeanFactory.class)); chain.handleMessage(message); Mockito.verify(outputChannel).send(Mockito.any(Message.class)); }
@Test public void chainResolvesReplyChannelName() { Message<String> message = MessageBuilder.withPayload("test").setReplyChannelName("testChannel").build(); DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); beanFactory.registerSingleton("testChannel", outputChannel); List<MessageHandler> handlers = new ArrayList<MessageHandler>(); handlers.add(producer1); handlers.add(producer2); handlers.add(producer3); MessageHandlerChain chain = new MessageHandlerChain(); chain.setBeanName("testChain"); chain.setHandlers(handlers); chain.setBeanFactory(beanFactory); chain.handleMessage(message); Mockito.verify(outputChannel).send(Mockito.eq(message)); }