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.expression;
8   
9   import org.mule.DefaultMuleMessage;
10  import org.mule.api.MuleContext;
11  import org.mule.api.MuleMessage;
12  import org.mule.api.expression.RequiredValueException;
13  import org.mule.tck.junit4.AbstractMuleTestCase;
14  
15  import java.util.HashMap;
16  import java.util.Map;
17  
18  import org.junit.Before;
19  import org.junit.Test;
20  import org.mockito.Mockito;
21  
22  import static org.junit.Assert.assertEquals;
23  import static org.junit.Assert.assertNull;
24  import static org.junit.Assert.assertTrue;
25  
26  public class MapPayloadExpressionEvaluatorTestCase extends AbstractMuleTestCase
27  {
28      private MuleContext muleContext = Mockito.mock(MuleContext.class);
29      private Map<String, String> messageProperties = new HashMap<String, String>(3);
30      private MapPayloadExpressionEvaluator evaluator = new MapPayloadExpressionEvaluator();
31      private MuleMessage message;
32  
33      @Before
34      public void createMessagePropertiesAndMuleMessage() throws Exception
35      {
36          messageProperties.put("foo", "moo");
37          messageProperties.put("bar", "mar");
38          messageProperties.put("ba?z", "maz");
39  
40          message = new DefaultMuleMessage(messageProperties, muleContext);
41      }
42  
43      @Test
44      public void requiredKeyWithExistingValueShouldReturnValue()
45      {
46          Object result = evaluator.evaluate("foo", message);
47          assertEquals("moo", result);
48      }
49  
50      @Test
51      public void requiredKeyWithOptionalityMarkerInlineAndExistingValueShouldReturnValue()
52      {
53          Object result = evaluator.evaluate("ba?z", message);
54          assertEquals("maz", result);
55      }
56  
57      @Test(expected = RequiredValueException.class)
58      public void requireKeyWithMissingValueShouldFail()
59      {
60          evaluator.evaluate("nonexisting", message);
61      }
62  
63      @Test
64      public void optionalKeyWithExistingValueShouldReturnValue()
65      {
66          Object result = evaluator.evaluate("bar?", message);
67          assertEquals("mar", result);
68      }
69  
70      @Test
71      public void optionalKeyWithMissingValueShouldReturnNull()
72      {
73          Object result = evaluator.evaluate("nonexistent?", message);
74          assertNull(result);
75      }
76  
77      @Test
78      public void multipleExpressionsShouldReturnMultipleValues() throws Exception
79      {
80          // direct match
81          Object result = evaluator.evaluate("foo,bar?,ba?z,fool?", message);
82          assertTrue(result instanceof Map);
83  
84          Map<?, ?> map = (Map<?, ?>) result;
85          assertEquals(3, map.size());
86  
87          assertEquals("moo", map.get("foo"));
88          assertEquals("mar", map.get("bar"));
89          assertEquals("maz", map.get("ba?z"));
90          assertNull(map.get("fool?"));
91      }
92  }