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.util.Collections;
11 import java.util.Map;
12
13 import static org.mockito.Mockito.*;
14
15 public class AbstractWebPanelTest extends TestCase
16 {
17 public void testStaticRenderer()
18 {
19 AbstractWebPanel panel = new AbstractWebPanel(null)
20 {
21 public String getHtml(Map<String, Object> context)
22 {
23 final WebPanelRenderer renderer = getRenderer();
24 assertEquals(renderer, StaticWebPanelRenderer.RENDERER);
25 return null;
26 }
27 };
28
29 panel.setResourceType(StaticWebPanelRenderer.RESOURCE_TYPE);
30 panel.getHtml(null);
31 }
32
33 public void testUnsupportedRendererType()
34 {
35 final PluginAccessor accessorMock = mock(PluginAccessor.class);
36 when(accessorMock.getEnabledModulesByClass(WebPanelRenderer.class)).thenReturn(Collections.<WebPanelRenderer>emptyList());
37
38 AbstractWebPanel panel = new AbstractWebPanel(accessorMock)
39 {
40 public String getHtml(Map<String, Object> context)
41 {
42 try
43 {
44 getRenderer();
45 fail();
46 }
47 catch (RendererException re)
48 {
49
50 }
51 return null;
52 }
53 };
54
55 panel.setResourceType("unsupported-type");
56 panel.getHtml(null);
57 }
58
59 public void testSupportedRendererType()
60 {
61 final PluginAccessor accessorMock = mock(PluginAccessor.class);
62 final WebPanelRenderer velocityRenderer = mock(WebPanelRenderer.class);
63 when(velocityRenderer.getResourceType()).thenReturn("velocity");
64 final WebPanelRenderer unsupportedRenderer = mock(WebPanelRenderer.class);
65 when(unsupportedRenderer.getResourceType()).thenReturn("unsupported-type");
66 when(accessorMock.getEnabledModulesByClass(WebPanelRenderer.class)).thenReturn(ImmutableList.of(unsupportedRenderer, velocityRenderer));
67
68 AbstractWebPanel panel = new AbstractWebPanel(accessorMock)
69 {
70 public String getHtml(Map<String, Object> context)
71 {
72 final WebPanelRenderer webPanelRenderer = getRenderer();
73 assertNotNull(webPanelRenderer);
74 assertEquals(velocityRenderer, webPanelRenderer);
75 return null;
76 }
77 };
78
79 panel.setResourceType("velocity");
80 panel.getHtml(null);
81 }
82 }