View Javadoc

1   package com.atlassian.plugin.webresource;
2   
3   import com.atlassian.plugin.Plugin;
4   import com.atlassian.plugin.servlet.DownloadableResource;
5   import junit.framework.TestCase;
6   import org.dom4j.DocumentException;
7   import org.mockito.Mock;
8   import org.mockito.MockitoAnnotations;
9   
10  import java.util.Collections;
11  import java.util.LinkedHashSet;
12  
13  import static org.mockito.Mockito.mock;
14  import static org.mockito.Mockito.verify;
15  import static org.mockito.Mockito.when;
16  
17  public class TestSuperBatchSubResourceBuilder extends TestCase
18  {
19      @Mock
20      private DefaultResourceDependencyResolver mockDependencyResolver;
21      @Mock
22      private DownloadableResourceFinder mockResourceFinder;
23  
24      private SuperBatchSubResourceBuilder builder;
25  
26      @Override
27      public void setUp() throws Exception
28      {
29          super.setUp();
30  
31          MockitoAnnotations.initMocks(this);
32          builder = new SuperBatchSubResourceBuilder(mockDependencyResolver, mockResourceFinder);
33      }
34  
35      @Override
36      public void tearDown() throws Exception
37      {
38          mockDependencyResolver = null;
39          mockResourceFinder = null;
40  
41          builder = null;
42  
43          super.tearDown();
44      }
45  
46      public void testParsePluginResource() throws UrlParseException
47      {
48          when(mockDependencyResolver.getSuperBatchDependencies()).thenReturn(Collections.<WebResourceModuleDescriptor>emptyList());
49          String path = "/download/superbatch/css/images/foo.png";
50          assertTrue(builder.matches(path));
51          DownloadableResource resource = builder.parse(path, Collections.<String, String>emptyMap());
52          BatchSubResource batchResource = (BatchSubResource) resource;
53          assertEquals("css/images/foo.png", batchResource.getResourceName());
54          assertTrue(batchResource.isEmpty());
55      }
56  
57      public void testParsePluginResourceAndResolve() throws UrlParseException, DocumentException, ClassNotFoundException
58      {
59          String path = "/download/superbatch/css/images/foo.png";
60  
61          String moduleKey = "super-resources";
62          Plugin testPlugin = TestUtils.createTestPlugin();
63          DownloadableResource imageResource = mock(DownloadableResource.class);
64          when(mockResourceFinder.find(moduleKey, "css/images/foo.png")).thenReturn(imageResource);
65  
66          LinkedHashSet<WebResourceModuleDescriptor> superBatchDependencies = new LinkedHashSet<WebResourceModuleDescriptor>();
67          WebResourceModuleDescriptor moduleDescriptor = TestUtils.createWebResourceModuleDescriptor(moduleKey, testPlugin);
68          superBatchDependencies.add(moduleDescriptor);
69          when(mockDependencyResolver.getSuperBatchDependencies()).thenReturn(superBatchDependencies);
70  
71          DownloadableResource resource = builder.parse(path, Collections.<String, String>emptyMap());
72          BatchSubResource batchResource = (BatchSubResource) resource;
73          assertEquals("css/images/foo.png", batchResource.getResourceName());
74          assertFalse(batchResource.isEmpty());
75  
76          verify(mockResourceFinder).find(moduleKey, "css/images/foo.png");
77      }
78  }