@Test public void testProcessAndSendWithFilterAndProjectionAndMethodInvokingExpressionEvaluated() { when(group.getMessages()).thenReturn(messages); processor = new ExpressionEvaluatingMessageGroupProcessor(String.format("T(%s).sum(?[payload>2].![payload])", getClass().getName())); processor.setBeanFactory(mock(BeanFactory.class)); Object result = processor.processMessageGroup(group); assertTrue(result instanceof AbstractIntegrationMessageBuilder<?>); Message<?> resultMessage = ((AbstractIntegrationMessageBuilder<?>) result).build(); assertEquals(3 + 4 + 5, resultMessage.getPayload()); }
@Test public void testProcessAndSendWithSizeExpressionEvaluated() { when(group.getMessages()).thenReturn(messages); processor = new ExpressionEvaluatingMessageGroupProcessor("#root.size()"); processor.setBeanFactory(mock(BeanFactory.class)); Object result = processor.processMessageGroup(group); assertTrue(result instanceof AbstractIntegrationMessageBuilder<?>); Message<?> resultMessage = ((AbstractIntegrationMessageBuilder<?>) result).build(); assertEquals(5, resultMessage.getPayload()); }
@Test public void testProcessAndSendWithFilterAndProjectionExpressionEvaluated() { when(group.getMessages()).thenReturn(messages); processor = new ExpressionEvaluatingMessageGroupProcessor("?[payload>2].![payload]"); processor.setBeanFactory(mock(BeanFactory.class)); Object result = processor.processMessageGroup(group); assertTrue(result instanceof AbstractIntegrationMessageBuilder<?>); Message<?> resultMessage = ((AbstractIntegrationMessageBuilder<?>) result).build(); assertTrue(resultMessage.getPayload() instanceof Collection<?>); Collection<?> list = (Collection<?>) resultMessage.getPayload(); assertEquals(3, list.size()); assertTrue(list.contains(3)); assertTrue(list.contains(4)); assertTrue(list.contains(5)); }
@Test public void testProcessAndCheckHeaders() { when(group.getMessages()).thenReturn(messages); processor = new ExpressionEvaluatingMessageGroupProcessor("#root"); processor.setBeanFactory(mock(BeanFactory.class)); Object result = processor.processMessageGroup(group); processor.setBeanFactory(mock(BeanFactory.class)); assertTrue(result instanceof AbstractIntegrationMessageBuilder<?>); Message<?> resultMessage = ((AbstractIntegrationMessageBuilder<?>) result).build(); assertEquals("bar", resultMessage.getHeaders().get("foo")); }
@Test public void testProcessAndSendWithProjectionExpressionEvaluated() { when(group.getMessages()).thenReturn(messages); processor = new ExpressionEvaluatingMessageGroupProcessor("![payload]"); processor.setBeanFactory(mock(BeanFactory.class)); Object result = processor.processMessageGroup(group); assertTrue(result instanceof AbstractIntegrationMessageBuilder<?>); Message<?> resultMessage = ((AbstractIntegrationMessageBuilder<?>) result).build(); assertTrue(resultMessage.getPayload() instanceof Collection<?>); Collection<?> list = (Collection<?>) resultMessage.getPayload(); assertEquals(5, list.size()); assertTrue(list.contains(1)); assertTrue(list.contains(2)); assertTrue(list.contains(3)); assertTrue(list.contains(4)); assertTrue(list.contains(5)); }