View Javadoc

1   package com.atlassian.plugin.web.model;
2   
3   import com.atlassian.plugin.PluginAccessor;
4   import com.atlassian.plugin.web.renderer.RendererException;
5   import com.atlassian.plugin.web.renderer.StaticWebPanelRenderer;
6   import com.atlassian.plugin.web.renderer.WebPanelRenderer;
7   import com.google.common.collect.ImmutableList;
8   import junit.framework.TestCase;
9   
10  import java.io.IOException;
11  import java.io.StringWriter;
12  import java.util.Collections;
13  import java.util.Map;
14  
15  import static org.mockito.Mockito.*;
16  
17  public class AbstractWebPanelTest extends TestCase
18  {
19      public void testStaticGetHtml() throws IOException
20      {
21          AbstractWebPanel panel = new MyAbstractWebPanel();
22          panel.setResourceType(StaticWebPanelRenderer.RESOURCE_TYPE);
23  
24          assertEquals("cheese", panel.getHtml(Collections.<String, Object>emptyMap()));
25      }
26  
27      public void testStaticWriteHtml() throws IOException
28      {
29          AbstractWebPanel panel = new MyAbstractWebPanel();
30          panel.setResourceType(StaticWebPanelRenderer.RESOURCE_TYPE);
31  
32          StringWriter out = new StringWriter();
33          panel.writeHtml(out, Collections.<String, Object>emptyMap());
34          assertEquals("cheese", out.toString());
35      }
36  
37      public void testUnsupportedRendererType()
38      {
39          final PluginAccessor accessorMock = mock(PluginAccessor.class);
40          when(accessorMock.getEnabledModulesByClass(WebPanelRenderer.class)).thenReturn(Collections.<WebPanelRenderer>emptyList());
41  
42          AbstractWebPanel panel = new AbstractWebPanel(accessorMock)
43          {
44              public String getHtml(Map<String, Object> context)
45              {
46                  try
47                  {
48                      getRenderer();
49                      fail();
50                  }
51                  catch (RendererException re)
52                  {
53                      // expected
54                  }
55                  return null;
56              }
57          };
58  
59          panel.setResourceType("unsupported-type");
60          panel.getHtml(null);
61      }
62  
63      public void testSupportedRendererType()
64      {
65          final PluginAccessor accessorMock = mock(PluginAccessor.class);
66          final WebPanelRenderer velocityRenderer = mock(WebPanelRenderer.class);
67          when(velocityRenderer.getResourceType()).thenReturn("velocity");
68          final WebPanelRenderer unsupportedRenderer = mock(WebPanelRenderer.class);
69          when(unsupportedRenderer.getResourceType()).thenReturn("unsupported-type");
70          when(accessorMock.getEnabledModulesByClass(WebPanelRenderer.class)).thenReturn(ImmutableList.of(unsupportedRenderer, velocityRenderer));
71  
72          AbstractWebPanel panel = new AbstractWebPanel(accessorMock)
73          {
74              public String getHtml(Map<String, Object> context)
75              {
76                  final WebPanelRenderer webPanelRenderer = getRenderer();
77                  assertNotNull(webPanelRenderer);
78                  assertEquals(velocityRenderer, webPanelRenderer);
79                  return null;
80              }
81          };
82  
83          panel.setResourceType("velocity");
84          panel.getHtml(null);
85      }
86  
87      private static class MyAbstractWebPanel extends AbstractWebPanel
88      {
89          public MyAbstractWebPanel()
90          {
91              super(null);
92          }
93  
94          public String getHtml(Map<String, Object> context)
95          {
96              final WebPanelRenderer renderer = getRenderer();
97              assertEquals(renderer, StaticWebPanelRenderer.RENDERER);
98              return "cheese";
99          }
100     }
101 }