1   package com.atlassian.plugins.codegen.modules.common.web;
2   
3   import org.junit.Before;
4   import org.junit.Test;
5   
6   import static org.junit.Assert.assertEquals;
7   import static org.junit.Assert.assertNotNull;
8   
9   /**
10   * @since 3.6
11   */
12  public class WebItemTest extends AbstractWebFragmentTest<WebItemProperties>
13  {
14      public static final String GLOBAL_SETTINGS_SECTION = "system.admin/globalsettings";
15  
16      public WebItemTest()
17      {
18          super("web-item", new WebItemModuleCreator());
19      }
20      
21      @Before
22      public void setupProps() throws Exception
23      {
24          setProps(new WebItemProperties(MODULE_NAME, GLOBAL_SETTINGS_SECTION));
25          props.setIncludeExamples(false);
26      }
27  
28      @Test
29      public void moduleHasDefaultKey() throws Exception
30      {
31          assertEquals(MODULE_KEY, getGeneratedModule().attributeValue("key"));
32      }
33      
34      @Test
35      public void moduleHasSection() throws Exception
36      {
37          assertEquals(GLOBAL_SETTINGS_SECTION, getGeneratedModule().attributeValue("section"));
38      }
39  
40      @Test
41      public void moduleHasDefaultWeight() throws Exception
42      {
43          assertEquals("1000", getGeneratedModule().attributeValue("weight"));
44      }
45      
46      @Test
47      public void moduleHasSpecifiedWeight() throws Exception
48      {
49          props.setWeight(20);
50  
51          assertEquals("20", getGeneratedModule().attributeValue("weight"));
52      }
53  
54      @Test
55      public void iconIsAdded() throws Exception
56      {
57          props.setIcon(icon);
58  
59          assertNotNull(getGeneratedModule().selectSingleNode("icon"));
60      }
61  
62      @Test
63      public void iconHasLink() throws Exception
64      {
65          props.setIcon(icon);
66  
67          assertEquals(icon.getLink().getValue(), getGeneratedModule().selectSingleNode("icon/link").getText());
68      }
69      
70      @Test
71      public void iconHasWidth() throws Exception
72      {
73          props.setIcon(icon);
74  
75          assertEquals(String.valueOf(icon.getWidth()), getGeneratedModule().selectSingleNode("icon/@width").getText());
76      }
77  
78      @Test
79      public void iconHasHeight() throws Exception
80      {
81          props.setIcon(icon);
82  
83          assertEquals(String.valueOf(icon.getHeight()), getGeneratedModule().selectSingleNode("icon/@height").getText());
84      }
85      
86      @Test
87      public void labelIsAdded() throws Exception
88      {
89          props.setLabel(label);
90  
91          assertNotNull(getGeneratedModule().selectSingleNode("label"));
92      }
93      
94      @Test
95      public void labelHasI18nKey() throws Exception
96      {
97          props.setLabel(label);
98          
99          assertEquals(label.getKey(), getGeneratedModule().selectSingleNode("label/@key").getText());
100     }
101 
102     @Test
103     public void labelHasParams() throws Exception
104     {
105         props.setLabel(label);
106         
107         assertEquals(2, getGeneratedModule().selectNodes("label/param").size());
108     }
109 
110     @Test
111     public void labelParam0HasName() throws Exception
112     {
113         props.setLabel(label);
114         
115         assertEquals("param0", getGeneratedModule().selectSingleNode("label/param[1]/@name").getText());
116     }
117 
118     @Test
119     public void labelParam0HasValue() throws Exception
120     {
121         props.setLabel(label);
122         
123         assertEquals(label.getParams().get("param0"), getGeneratedModule().selectSingleNode("label/param[1]/@value").getText());
124     }
125 
126     @Test
127     public void labelParam1HasName() throws Exception
128     {
129         props.setLabel(label);
130         
131         assertEquals("param1", getGeneratedModule().selectSingleNode("label/param[2]/@name").getText());
132     }
133 
134     @Test
135     public void labelParam1HasValue() throws Exception
136     {
137         props.setLabel(label);
138         
139         assertEquals(label.getParams().get("param1"), getGeneratedModule().selectSingleNode("label/param[2]/@value").getText());
140     }
141 
142     @Test
143     public void labelStringIsAddedToI18nProperties() throws Exception
144     {
145         props.setLabel(label);
146         
147         getI18nString(label.getKey(), label.getValue());
148     }
149     
150     @Test
151     public void linkIsAdded() throws Exception
152     {
153         props.setLink(link);
154 
155         assertNotNull(getGeneratedModule().selectSingleNode("link"));
156     }
157     
158     @Test
159     public void linkHasId() throws Exception
160     {
161         props.setLink(link);
162         
163         assertEquals(link.getLinkId(), getGeneratedModule().selectSingleNode("link/@linkId").getText());
164     }
165 
166     @Test
167     public void linkHasLink() throws Exception
168     {
169         props.setLink(link);
170         
171         assertEquals(link.getValue(), getGeneratedModule().selectSingleNode("link").getText());
172     }
173 
174     @Test
175     public void paramsAreAdded() throws Exception
176     {
177         createParams();
178 
179         assertEquals(2, getGeneratedModule().selectNodes("param").size());
180     }
181     
182     @Test
183     public void param0HasValue() throws Exception
184     {
185         createParams();
186 
187         assertEquals("true", getGeneratedModule().selectSingleNode("param[@name='isPopupLink']/@value").getText());
188     }
189 
190     @Test
191     public void param1HasValue() throws Exception
192     {
193         createParams();
194 
195         assertEquals("false", getGeneratedModule().selectSingleNode("param[@name='isSuperAwesome']/@value").getText());
196     }
197 
198     @Test
199     public void tooltipIsAdded() throws Exception
200     {
201         props.setTooltip(tooltip);
202 
203         assertNotNull(getGeneratedModule().selectSingleNode("tooltip"));
204     }
205     
206     @Test
207     public void tooltipHasKey() throws Exception
208     {
209         props.setTooltip(tooltip);
210         
211         assertEquals(tooltip.getKey(), getGeneratedModule().selectSingleNode("tooltip/@key").getText());
212     }
213     
214     @Test
215     public void tooltipStringIsAddedToI18nProperties() throws Exception
216     {
217         props.setTooltip(tooltip);
218         
219         getI18nString(tooltip.getKey(), tooltip.getValue());
220     }
221     
222     protected void createParams()
223     {
224         props.addParam("isPopupLink", "true");
225         props.addParam("isSuperAwesome", "false");
226     }
227 }