1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.templating.imaging.parameters;
35
36 import static org.hamcrest.CoreMatchers.*;
37 import static org.junit.Assert.assertThat;
38 import static org.mockito.Matchers.anyString;
39 import static org.mockito.Mockito.*;
40
41 import info.magnolia.context.MgnlContext;
42 import info.magnolia.imaging.ParameterProvider;
43 import info.magnolia.repository.RepositoryConstants;
44 import info.magnolia.test.mock.MockWebContext;
45
46 import javax.jcr.Node;
47 import javax.jcr.RepositoryException;
48 import javax.jcr.Session;
49 import javax.servlet.http.HttpServletRequest;
50
51 import org.junit.Before;
52 import org.junit.Test;
53
54
55
56
57 public class ThemeAwareParameterProviderFactoryTest {
58
59 private static final String CONTEXT_PATH = "/contextPath";
60 private ThemeAwareParameterProviderFactory themeAwareParameterProviderFactory;
61 private HttpServletRequest httpServletRequest;
62 private Session session;
63 private Node node;
64
65 @Before
66 public void setUp() throws RepositoryException {
67 session = mock(Session.class);
68
69 MockWebContext ctx = new MockWebContext();
70 ctx.setContextPath(CONTEXT_PATH);
71 ctx.addSession(RepositoryConstants.WEBSITE, session);
72
73 MgnlContext.setInstance(ctx);
74
75 node = mock(Node.class);
76 when(session.getNode(anyString())).thenReturn(node);
77
78 themeAwareParameterProviderFactory = new ThemeAwareParameterProviderFactory();
79
80 httpServletRequest = mock(HttpServletRequest.class);
81 }
82
83 @Test
84 public void newParameterProviderFor() {
85
86 when(httpServletRequest.getPathInfo()).thenReturn(String.format("/mte/theme-name/small/%s/path-to-node/filename.jpg", RepositoryConstants.WEBSITE));
87
88
89 ParameterProvider parameterProvider = themeAwareParameterProviderFactory.newParameterProviderFor(httpServletRequest);
90
91
92 assertThat(parameterProvider.getParameter(), instanceOf(ThemeAwareParameter.class));
93 assertThat(((ThemeAwareParameter) parameterProvider.getParameter()).getNode(), is(node));
94 }
95
96 @Test(expected = RuntimeException.class)
97 public void newParameterProviderForWithRepositoryException() throws RepositoryException {
98
99 when(httpServletRequest.getPathInfo()).thenReturn(String.format("/mte/theme-name/small/%s/path-to-node/filename.jpg", RepositoryConstants.WEBSITE));
100 when(session.getNode(anyString())).thenThrow(new RepositoryException("This exception is thrown on purpose"));
101
102
103 themeAwareParameterProviderFactory.newParameterProviderFor(httpServletRequest);
104
105
106
107 }
108
109 }