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