/* vim: set ts=2 et sw=2 cindent fo=qroca: */
package com.globant.katari.editablepages.view;
import com.globant.katari.tools.FreemarkerTestEngine;
import org.junit.Test;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.Locale;
import org.springframework.mock.web.MockHttpServletRequest;
import com.globant.katari.editablepages.TestUtils;
public class PreviewButtonFtlTest {
/** Tests that the previewButton.ftl shows the preview button for an admin.
*/
@Test
public final void testPreviewButton_administrator() throws Exception {
TestUtils.setRole("ROLE_ADMINISTRATOR");
List<String> valid = new ArrayList<String>();
valid.add(".*<div class='preview-button'>.*");
valid.add(".*<a class='published'.*");
valid.add(".*<a class='pending-publication'.*");
List<String> invalid = new ArrayList<String>();
invalid.add("Exception");
FreemarkerTestEngine engine = new FreemarkerTestEngine(
"/com/globant/katari/editablepages/view", Locale.ENGLISH,
buildModel());
engine.runAndValidate("previewButton.ftl", valid, invalid);
}
/** Tests that the previewButton.ftl does not show the preview button for a
* normal user.
*/
@Test
public final void testPreviewButton_user() throws Exception {
TestUtils.setRole("SOME_ROLE");
List<String> valid = new ArrayList<String>();
List<String> invalid = new ArrayList<String>();
invalid.add(".*<div class='preview-button'>.*");
invalid.add(".*<a class='published'.*");
invalid.add(".*<a class='pending-publication'.*");
invalid.add("Exception");
FreemarkerTestEngine engine = new FreemarkerTestEngine(
"/com/globant/katari/editablepages/view", Locale.ENGLISH,
buildModel());
engine.runAndValidate("previewButton.ftl", valid, invalid);
}
private Map<String, Object> buildModel() {
// Building Model
Map<String, Object> model = new HashMap<String, Object>();
Object accessHelper = TestUtils.getServletBeanFactory()
.getBean("katari.secureUrlAccessHelper");
MockHttpServletRequest request = new MockHttpServletRequest();
request.setAttribute("secureUrlHelper", accessHelper);
request.setRequestURI("/a/module/editable-pages/page/page-1");
model.put("request", request);
model.put("base", "/a/module/editable-pages");
return model;
}
}