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.variation;
35
36 import static org.junit.Assert.assertEquals;
37 import static org.mockito.Mockito.*;
38
39 import info.magnolia.cms.beans.runtime.File;
40 import info.magnolia.context.MgnlContext;
41 import info.magnolia.jcr.util.NodeTypes;
42 import info.magnolia.module.site.Site;
43 import info.magnolia.module.site.SiteManager;
44 import info.magnolia.module.site.theme.ThemeReference;
45 import info.magnolia.repository.RepositoryConstants;
46 import info.magnolia.test.ComponentsTestUtil;
47 import info.magnolia.test.mock.MockWebContext;
48 import info.magnolia.test.mock.jcr.MockNode;
49 import info.magnolia.test.mock.jcr.MockSession;
50
51 import javax.jcr.Node;
52 import javax.jcr.Property;
53 import javax.jcr.RepositoryException;
54
55 import org.junit.After;
56 import org.junit.Before;
57 import org.junit.Test;
58
59
60
61
62 public class ImageOperationProvidingVariationTest {
63
64 private Property imageProperty;
65 private MockNode imageNode;
66 private ImageOperationProvidingVariation imageOperationProvidingVariation;
67
68 @Before
69 public void setUp() throws Exception {
70 MockWebContext ctx = new MockWebContext();
71 MgnlContext.setInstance(ctx);
72 MockSession session = new MockSession(RepositoryConstants.WEBSITE);
73 ctx.addSession(RepositoryConstants.WEBSITE, session);
74 ctx.setContextPath("http://localhost:9090/demoAuthor");
75
76 String[] imageNodeName = { "image" };
77 imageNode = createChildNodes((MockNode) session.getRootNode(), imageNodeName, NodeTypes.Page.NAME);
78 imageNode.setProperty(File.PROPERTY_FILENAME, "fileName");
79 imageNode.setProperty(File.EXTENSION, "jpg");
80 imageProperty = imageNode.setProperty("document", "img");
81
82 Site site = mock(Site.class);
83 ThemeReference themeRef = new ThemeReference();
84 themeRef.setName("myTheme");
85 when(site.getTheme()).thenReturn(themeRef);
86 SiteManager siteManager = mock(SiteManager.class);
87 when(siteManager.getAssignedSite(any(Node.class))).thenReturn(site);
88
89 imageOperationProvidingVariation = new ImageOperationProvidingVariation(siteManager);
90 imageOperationProvidingVariation.setGeneratorName("generatorName");
91 imageOperationProvidingVariation.setName("name");
92 }
93
94 @After
95 public void tearDown() {
96 ComponentsTestUtil.clear();
97 MgnlContext.setInstance(null);
98 }
99
100 @Test
101 public void createImageOperationProvidingVariation() throws Exception {
102
103 ImageOperationProvidingVariation imageOperationProvidingVariation = new ImageOperationProvidingVariation(null);
104
105
106 String generatorName = imageOperationProvidingVariation.getGeneratorName();
107
108
109 assertEquals("mte", generatorName);
110 }
111
112 @Test
113 public void createLink() throws RepositoryException {
114
115 String link = imageOperationProvidingVariation.createLink(imageProperty);
116
117
118 assertEquals("http://localhost:9090/demoAuthor/.imaging/generatorName/myTheme/name/website/image/fileName.jpg", link);
119 }
120
121 @Test
122 public void createLinkWithoutBlankSpaces() throws Exception {
123
124 imageNode.setProperty(File.PROPERTY_FILENAME, "name with blank spaces");
125
126
127 String link = imageOperationProvidingVariation.createLink(imageProperty);
128
129
130 assertEquals("http://localhost:9090/demoAuthor/.imaging/generatorName/myTheme/name/website/image/name%20with%20blank%20spaces.jpg", link);
131 }
132
133 @Test
134 public void createLinkDoNotDuplicateExtension() throws RepositoryException {
135
136 imageNode.setProperty(File.PROPERTY_FILENAME, "fileName.jpg");
137
138
139 String link = imageOperationProvidingVariation.createLink(imageProperty);
140
141
142 assertEquals("http://localhost:9090/demoAuthor/.imaging/generatorName/myTheme/name/website/image/fileName.jpg", link);
143 }
144
145 @Test
146 public void createLinkWhenFilenameDoesNotHaveExtension() throws RepositoryException {
147
148 imageNode.setProperty(File.PROPERTY_FILENAME, "a_jpg");
149 imageNode.setProperty(File.EXTENSION, "jpg");
150
151
152 String link = imageOperationProvidingVariation.createLink(imageProperty);
153
154
155 assertEquals("http://localhost:9090/demoAuthor/.imaging/generatorName/myTheme/name/website/image/a_jpg.jpg", link);
156 }
157
158 @Test
159 public void createLinkWhenExtensionIsEmpty() throws RepositoryException {
160
161 imageNode.setProperty(File.EXTENSION, "");
162
163
164 String link = imageOperationProvidingVariation.createLink(imageProperty);
165
166
167 assertEquals("http://localhost:9090/demoAuthor/.imaging/generatorName/myTheme/name/website/image/fileName", link);
168 }
169
170 protected MockNode createChildNodes(MockNode parent, String[] childNodeNames, String nodeTypeName) throws RepositoryException {
171 for (String nodeName : childNodeNames) {
172 MockNode child = new MockNode(nodeName, nodeTypeName);
173 parent.addNode(child);
174 }
175 return childNodeNames.length == 0 ? null : (MockNode) parent.getNode(childNodeNames[0]);
176 }
177 }