View Javadoc

1   /*
2    * $Id: SimpleCollectionAggregatorTestCase.java 22506 2011-07-21 16:30:40Z stephen.fenech $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.routing;
12  
13  import org.mule.DefaultMuleEvent;
14  import org.mule.DefaultMuleMessage;
15  import org.mule.MessageExchangePattern;
16  import org.mule.api.MuleEvent;
17  import org.mule.api.MuleMessage;
18  import org.mule.api.MuleSession;
19  import org.mule.api.endpoint.InboundEndpoint;
20  import org.mule.api.service.Service;
21  import org.mule.tck.MuleTestUtils;
22  import org.mule.tck.junit4.AbstractMuleContextTestCase;
23  import org.mule.tck.testmodels.fruit.Apple;
24  
25  import java.util.Arrays;
26  import java.util.Collections;
27  import java.util.List;
28  
29  import org.junit.Test;
30  
31  import static org.junit.Assert.assertEquals;
32  import static org.junit.Assert.assertNotNull;
33  import static org.junit.Assert.assertNull;
34  
35  public class SimpleCollectionAggregatorTestCase extends AbstractMuleContextTestCase
36  {
37  
38      public SimpleCollectionAggregatorTestCase()
39      {
40          setStartContext(true);
41      }
42  
43      @Test
44      public void testMessageProcessor() throws Exception
45      {
46          MuleSession session = getTestSession(getTestService(), muleContext);
47          Service testService = getTestService("test", Apple.class);
48          assertNotNull(testService);
49  
50          SimpleCollectionAggregator router = new SimpleCollectionAggregator();
51          router.setMuleContext(muleContext);
52          router.setFlowConstruct(testService);
53          router.initialise();
54          
55          MuleMessage message1 = new DefaultMuleMessage("test event A", muleContext);
56          MuleMessage message2 = new DefaultMuleMessage("test event B", muleContext);
57          MuleMessage message3 = new DefaultMuleMessage("test event C", muleContext);
58          message1.setCorrelationId(message1.getUniqueId());
59          message2.setCorrelationId(message1.getUniqueId());
60          message3.setCorrelationId(message1.getUniqueId());
61          message1.setCorrelationGroupSize(3);
62  
63          InboundEndpoint endpoint = MuleTestUtils.getTestInboundEndpoint(MessageExchangePattern.ONE_WAY, muleContext);
64          MuleEvent event1 = new DefaultMuleEvent(message1, endpoint, session);
65          MuleEvent event2 = new DefaultMuleEvent(message2, endpoint, session);
66          MuleEvent event3 = new DefaultMuleEvent(message3, endpoint, session);
67  
68          assertNull(router.process(event1));
69          assertNull(router.process(event2));
70          MuleEvent resultEvent = router.process(event3);
71          assertNotNull(resultEvent);
72          MuleMessage resultMessage = resultEvent.getMessage();
73          assertNotNull(resultMessage);
74          List<String> payload = (List<String>)resultMessage.getPayload();
75          assertEquals(3, payload.size());
76          String[] results=new String[3];
77          results=payload.toArray(results);
78          Arrays.sort(results);
79          assertEquals("test event A", results[0]);
80          assertEquals("test event B", results[1]);
81          assertEquals("test event C", results[2]);
82      }
83  
84  }