View Javadoc

1   package com.atlassian.plugin.webresource;
2   
3   import static org.mockito.Mockito.when;
4   
5   import com.atlassian.plugin.PluginAccessor;
6   import com.atlassian.plugin.cache.filecache.impl.PassThroughFileCache;
7   import com.atlassian.plugin.servlet.DownloadableResource;
8   
9   import com.atlassian.plugin.webresource.cache.FileCacheKey;
10  import org.mockito.Mock;
11  import org.mockito.MockitoAnnotations;
12  
13  import java.util.Collections;
14  import java.util.Map;
15  import java.util.TreeMap;
16  
17  import junit.framework.TestCase;
18  
19  public class TestContextBatchDownloadableResourceBuilder extends TestCase
20  {
21      @Mock
22      private DefaultResourceDependencyResolver mockDependencyResolver;
23      @Mock
24      private PluginAccessor mockPluginAccessor;
25      @Mock
26      private WebResourceUrlProvider mockWebResourceUrlProvider;
27      @Mock
28      private DownloadableResourceFinder mockResourceFinder;
29  
30      private ContextBatchDownloadableResourceBuilder builder;
31  
32      @Override
33      public void setUp() throws Exception
34      {
35          super.setUp();
36  
37          MockitoAnnotations.initMocks(this);
38          builder = new ContextBatchDownloadableResourceBuilder(mockDependencyResolver, mockPluginAccessor, mockWebResourceUrlProvider,
39              mockResourceFinder, PassThroughFileCache.<FileCacheKey>instance());
40      }
41  
42      @Override
43      public void tearDown() throws Exception
44      {
45          mockDependencyResolver = null;
46          mockPluginAccessor = null;
47          mockWebResourceUrlProvider = null;
48          mockResourceFinder = null;
49          builder = null;
50  
51          super.tearDown();
52      }
53  
54      public void testParseCss() throws UrlParseException
55      {
56          final String context = "contexta";
57          createContext(context);
58          final String path = "/download/contextbatch/css/contexta/batch.css";
59          assertTrue(builder.matches(path));
60          final DownloadableResource resource = builder.parse(path, Collections.<String, String> emptyMap());
61          final ContextBatchDownloadableResource batchResource = (ContextBatchDownloadableResource) resource;
62          assertEquals("css", batchResource.getType());
63      }
64  
65      public void testParseCssWithMultipleContexts() throws UrlParseException
66      {
67          createContext("contexta");
68          createContext("contextb");
69          final String path = "/download/contextbatch/css/contexta,contextb/batch.css";
70          assertTrue(builder.matches(path));
71          final DownloadableResource resource = builder.parse(path, Collections.<String, String> emptyMap());
72          final ContextBatchDownloadableResource batchResource = (ContextBatchDownloadableResource) resource;
73          assertEquals("css", batchResource.getType());
74      }
75      
76      public void testParseJavascript() throws UrlParseException
77      {
78          createContext("contexta");
79          final String path = "/download/contextbatch/js/contexta/batch.js";
80          assertTrue(builder.matches(path));
81          final DownloadableResource resource = builder.parse(path, Collections.<String, String> emptyMap());
82          final ContextBatchDownloadableResource batchResource = (ContextBatchDownloadableResource) resource;
83          assertEquals("js", batchResource.getType());
84      }
85  
86      public void testParseWithParam() throws UrlParseException
87      {
88          createContext("contexta");
89          final String path = "/download/contextbatch/js/contexta/batch.js";
90          final Map<String, String> params = Collections.singletonMap("ieOnly", "true");
91          final DownloadableResource resource = builder.parse(path, params);
92          final ContextBatchDownloadableResource batchResource = (ContextBatchDownloadableResource) resource;
93          assertEquals(params, batchResource.getParams());
94      }
95  
96      public void testParseWithParams() throws UrlParseException
97      {
98          createContext("contexta");
99          final String path = "/download/contextbatch/js/contexta/batch.js";
100         final Map<String, String> params = new TreeMap<String, String>();
101         params.put("ieOnly", "true");
102         params.put("zomg", "false");
103         final DownloadableResource resource = builder.parse(path, params);
104         final ContextBatchDownloadableResource batchResource = (ContextBatchDownloadableResource) resource;
105         assertEquals(params, batchResource.getParams());
106     }
107 
108     public void testMatch()
109     {
110         assertTrue("correct path", builder.matches("/download/contextbatch/css/contexta/batch.css"));
111         assertFalse("wrong path", builder.matches("/download/contextbatch/js/contexta/batch.css"));
112         assertFalse("wrong path", builder.matches("/download/contextbatch/css/contexta/image.png"));
113     }
114 
115     private void createContext(String context)
116     {
117         when(mockDependencyResolver.getDependenciesInContext(context)).thenReturn(Collections.<WebResourceModuleDescriptor>emptyList());
118     }
119 }