1
2
3
4
5
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
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 }