View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule;
8   
9   import static org.junit.Assert.assertEquals;
10  import static org.junit.Assert.assertSame;
11  import static org.junit.Assert.assertTrue;
12  
13  import org.mule.api.MuleContext;
14  import org.mule.api.MuleMessage;
15  import org.mule.api.MuleMessageCollection;
16  import org.mule.tck.junit4.AbstractMuleTestCase;
17  import org.mule.tck.testmodels.fruit.Apple;
18  import org.mule.tck.testmodels.fruit.Banana;
19  import org.mule.tck.testmodels.fruit.Fruit;
20  import org.mule.tck.testmodels.fruit.GrapeFruit;
21  import org.mule.tck.testmodels.fruit.Orange;
22  
23  import java.util.List;
24  
25  import org.junit.Test;
26  import org.mockito.Mockito;
27  
28  public class DefaultMessageCollectionTestCase extends AbstractMuleTestCase
29  {
30  
31      Apple apple = new Apple();
32      Banana banana = new Banana();
33      GrapeFruit grapeFruit = new GrapeFruit();
34      Orange orange = new Orange();
35  
36      MuleContext muleContext = Mockito.mock(MuleContext.class);
37  
38      @Test
39      public void addMuleMessage()
40      {
41          MuleMessage message1 = new DefaultMuleMessage(apple, muleContext);
42          MuleMessage message2 = new DefaultMuleMessage(banana, muleContext);
43          MuleMessage message3 = new DefaultMuleMessage(orange, muleContext);
44  
45          DefaultMessageCollection messageCollection = new DefaultMessageCollection(muleContext);
46          messageCollection.addMessage(message1);
47          messageCollection.addMessage(message2);
48          messageCollection.addMessage(message3);
49  
50          assertEquals(3, messageCollection.getMessageList().size());
51          assertSame(message1, messageCollection.getMessage(0));
52          assertSame(message2, messageCollection.getMessage(1));
53          assertSame(message3, messageCollection.getMessage(2));
54  
55          assertEquals(3, messageCollection.getPayloadList().size());
56          assertTrue(messageCollection.getPayload() instanceof List<?>);
57          assertSame(apple, ((List) messageCollection.getPayload()).get(0));
58          assertSame(banana, ((List) messageCollection.getPayload()).get(1));
59          assertSame(orange, ((List) messageCollection.getPayload()).get(2));
60      }
61  
62      @Test
63      public void addMuleMessageCollection()
64      {
65          MuleMessageCollection messageCollection1 = Mockito.mock(MuleMessageCollection.class);
66          MuleMessageCollection messageCollection2 = Mockito.mock(MuleMessageCollection.class);
67          Mockito.when(messageCollection1.getPayload()).thenReturn(new Fruit[]{apple, banana});
68          Mockito.when(messageCollection2.getPayload()).thenReturn(new Fruit[]{grapeFruit, orange});
69  
70          DefaultMessageCollection messageCollectionUnderTest = new DefaultMessageCollection(muleContext);
71          messageCollectionUnderTest.addMessage(messageCollection1);
72          messageCollectionUnderTest.addMessage(messageCollection2);
73  
74          assertEquals(2, messageCollectionUnderTest.getMessageList().size());
75          assertSame(messageCollection1, messageCollectionUnderTest.getMessage(0));
76          assertSame(messageCollection2, messageCollectionUnderTest.getMessage(1));
77  
78          assertEquals(2, messageCollectionUnderTest.getPayloadList().size());
79          assertTrue(messageCollectionUnderTest.getPayload() instanceof List<?>);
80          assertSame(apple, ((Fruit[]) ((List) messageCollectionUnderTest.getPayload()).get(0))[0]);
81          assertSame(banana, ((Fruit[]) ((List) messageCollectionUnderTest.getPayload()).get(0))[1]);
82          assertSame(grapeFruit, ((Fruit[]) ((List) messageCollectionUnderTest.getPayload()).get(1))[0]);
83          assertSame(orange, ((Fruit[]) ((List) messageCollectionUnderTest.getPayload()).get(1))[1]);
84      }
85  
86      @Test
87      public void addMuleMessageAndMuleMessageCollection()
88      {
89          MuleMessage message3 = new DefaultMuleMessage(grapeFruit, muleContext);
90          MuleMessage message4 = new DefaultMuleMessage(orange, muleContext);
91  
92          MuleMessageCollection messageCollection1 = Mockito.mock(MuleMessageCollection.class);
93          Mockito.when(messageCollection1.getPayload()).thenReturn(new Fruit[]{apple, banana});
94  
95          DefaultMessageCollection messageCollectionUnderTest = new DefaultMessageCollection(muleContext);
96          messageCollectionUnderTest.addMessage(messageCollection1);
97          messageCollectionUnderTest.addMessage(message3);
98          messageCollectionUnderTest.addMessage(message4);
99  
100         assertEquals(3, messageCollectionUnderTest.getMessageList().size());
101         assertSame(messageCollection1, messageCollectionUnderTest.getMessage(0));
102         assertSame(message3, messageCollectionUnderTest.getMessage(1));
103         assertSame(message4, messageCollectionUnderTest.getMessage(2));
104 
105         assertEquals(3, messageCollectionUnderTest.getPayloadList().size());
106         assertTrue(messageCollectionUnderTest.getPayload() instanceof List<?>);
107         assertSame(apple, ((Fruit[]) ((List) messageCollectionUnderTest.getPayload()).get(0))[0]);
108         assertSame(banana, ((Fruit[]) ((List) messageCollectionUnderTest.getPayload()).get(0))[1]);
109         assertSame(grapeFruit, ((List) messageCollectionUnderTest.getPayload()).get(1));
110         assertSame(orange, ((List) messageCollectionUnderTest.getPayload()).get(2));
111     }
112 
113 }