View Javadoc

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