View Javadoc

1   package com.atlassian.plugin.loaders;
2   
3   import java.util.HashMap;
4   import java.util.Map;
5   
6   import com.google.common.collect.ImmutableMap;
7   
8   import org.dom4j.DocumentHelper;
9   import org.dom4j.Element;
10  import org.junit.Test;
11  
12  import static org.junit.Assert.assertEquals;
13  
14  public class LoaderUtilsTest
15  {
16      @Test
17      public void noParamsMeansAnEmptyMap()
18      {
19          Element element = DocumentHelper.createElement("parent");
20          assertEquals(ImmutableMap.of(), LoaderUtils.getParams(element));
21      }
22  
23      @Test
24      public void getParamsWorksWhenNameAndValueAreSpecified()
25      {
26          Element element = DocumentHelper.createElement("parent");
27  
28          Element param = DocumentHelper.createElement("param");
29          param.addAttribute("name", "param-name");
30          param.addAttribute("value", "param-value");
31          element.add(param);
32  
33          assertEquals(ImmutableMap.of("param-name", "param-value"),
34                  LoaderUtils.getParams(element));
35      }
36  
37      /**
38       * Allowing maps with null keys and values into the system is not a good idea.
39       * This test is to document current behaviour.
40       */
41      @Test
42      public void getParamsReturnsNullMapWhenNameAndValueAreOmitted()
43      {
44          Element element = DocumentHelper.createElement("parent");
45  
46          Element param = DocumentHelper.createElement("param");
47          element.add(param);
48  
49          Map<String, String> expected = new HashMap<String, String>();
50          expected.put(null, null);
51  
52          assertEquals(expected,
53                  LoaderUtils.getParams(element));
54      }
55  
56      @Test
57      public void valueIsTakenFromElementContentIfNoValueSet()
58      {
59          Element element = DocumentHelper.createElement("parent");
60  
61          Element param = DocumentHelper.createElement("param");
62          param.addAttribute("name", "param-name");
63          param.addText("param-content");
64          element.add(param);
65  
66          assertEquals(ImmutableMap.of("param-name", "param-content"),
67                  LoaderUtils.getParams(element));
68      }
69  }