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 }