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.is;
37 import static org.junit.Assert.assertThat;
38 import static org.mockito.Mockito.*;
39
40 import info.magnolia.context.MgnlContext;
41 import info.magnolia.imaging.ParameterProvider;
42 import info.magnolia.jcr.util.NodeTypes;
43 import info.magnolia.repository.RepositoryConstants;
44 import info.magnolia.test.mock.MockWebContext;
45 import info.magnolia.test.mock.jcr.MockNode;
46
47 import java.util.Calendar;
48
49 import javax.jcr.Node;
50 import javax.jcr.Property;
51 import javax.jcr.RepositoryException;
52 import javax.jcr.Session;
53
54 import org.junit.After;
55 import org.junit.Before;
56 import org.junit.Test;
57
58
59
60
61 public class ThemeAwareParameterCachingStrategyTest {
62
63 private static final String CONTEXT_PATH = "/test";
64
65 private Session session;
66 private ThemeAwareParameterCachingStrategy themeAwareParameterCachingStrategy;
67
68 @Before
69 public void setUp() {
70 session = mock(Session.class);
71
72 MockWebContext ctx = new MockWebContext();
73 ctx.setContextPath(CONTEXT_PATH);
74 ctx.addSession(RepositoryConstants.WEBSITE, session);
75
76 MgnlContext.setInstance(ctx);
77
78 themeAwareParameterCachingStrategy = new ThemeAwareParameterCachingStrategy();
79 }
80
81 @After
82 public void tearDown() {
83 MgnlContext.setInstance(null);
84 }
85
86 @Test
87 public void shouldRegenerate() throws RepositoryException {
88
89 Calendar lastModNode = Calendar.getInstance();
90 lastModNode.set(2015, 0, 19, 10, 16, 01);
91
92 MockNode node = new MockNode("parent");
93 node.setProperty(NodeTypes.LastModified.NAME, lastModNode);
94
95 when(session.getNode("/parent")).thenReturn(node);
96
97 Calendar lastModCache = Calendar.getInstance();
98 lastModCache.set(2015, 0, 19, 10, 16, 00);
99 MockNode cacheNode = new MockNode("parent");
100 Node resourceNode = cacheNode.addNode("resourceNode");
101 Property cachedProperty = resourceNode.setProperty("test", "value");
102 cacheNode.setProperty(NodeTypes.LastModified.NAME, lastModCache);
103
104 ParameterProvider<ThemeAwareParameter> parameterProvider = new ThemeAwareParameterProvider("/test/someTheme/website/parent/test.jpg");
105
106
107 boolean shouldRegenerate = themeAwareParameterCachingStrategy.shouldRegenerate(cachedProperty, parameterProvider);
108
109
110 assertThat(shouldRegenerate, is(true));
111 }
112
113 @Test
114 public void shouldNotRegenerate() throws RepositoryException {
115
116 Calendar lastModNode = Calendar.getInstance();
117 lastModNode.set(2015, 0, 19, 10, 15, 59);
118
119 MockNode node = new MockNode("parent");
120 node.setProperty(NodeTypes.LastModified.NAME, lastModNode);
121
122 when(session.getNode("/parent")).thenReturn(node);
123
124 Calendar lastModCache = Calendar.getInstance();
125 lastModCache.set(2015, 0, 19, 10, 16, 00);
126 MockNode cacheNode = new MockNode("parent");
127 Node resourceNode = cacheNode.addNode("resourceNode");
128 Property cachedProperty = resourceNode.setProperty("test", "value");
129 cacheNode.setProperty(NodeTypes.LastModified.NAME, lastModCache);
130
131 ParameterProvider<ThemeAwareParameter> parameterProvider = new ThemeAwareParameterProvider("/test/someTheme/website/parent/test.jpg");
132
133
134 boolean shouldRegenerate = themeAwareParameterCachingStrategy.shouldRegenerate(cachedProperty, parameterProvider);
135
136
137 assertThat(shouldRegenerate, is(false));
138 }
139
140
141 }