/*
* Copyright 2015-Present Entando Inc. (http://www.entando.com) All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.agiletec.plugins.jacms.apsadmin.portal.specialwidget.listviewer;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import com.agiletec.aps.system.common.entity.model.EntitySearchFilter;
import com.agiletec.aps.system.services.page.Widget;
import com.agiletec.aps.util.ApsProperties;
import com.agiletec.apsadmin.ApsAdminBaseTestCase;
import com.agiletec.plugins.jacms.aps.system.services.content.widget.util.FilterUtils;
import com.opensymphony.xwork2.Action;
/**
* @author E.Santoboni
*/
public class TestContentListViewerWidgetAction extends ApsAdminBaseTestCase {
public void testInitConfigListViewer_1() throws Throwable {
String result = this.executeConfigListViewer("admin", "homepage", "1", "content_viewer_list");
assertEquals(Action.SUCCESS, result);
ContentListViewerWidgetAction action = (ContentListViewerWidgetAction) this.getAction();
Widget widget = action.getWidget();
assertNotNull(widget);
assertEquals(0, widget.getConfig().size());
List<Properties> filtersProperties = action.getFiltersProperties();
assertNotNull(filtersProperties);
assertEquals(0, filtersProperties.size());
}
public void testInitConfigListViewer_2() throws Throwable {
String result = this.executeConfigListViewer("admin", "homepage", "0", null);
assertEquals(Action.SUCCESS, result);
ContentListViewerWidgetAction action = (ContentListViewerWidgetAction) this.getAction();
Widget widget = action.getWidget();
assertNotNull(widget);
assertEquals("content_viewer_list", widget.getType().getCode());
ApsProperties props = widget.getConfig();
assertEquals(4, props.size());
assertEquals("NEW", props.getProperty("contentType"));
assertEquals("5", props.getProperty("maxElemForItem"));
assertEquals("11", props.getProperty("modelId"));
assertEquals("(order=DESC;attributeFilter=true;likeOption=false;key=Date)+(order=ASC;attributeFilter=true;likeOption=false;key=Title)", props.getProperty("filters"));
List<Properties> filtersProperties = action.getFiltersProperties();
assertEquals(2, filtersProperties.size());
Properties firstFilter = filtersProperties.get(0);
assertEquals("DESC", firstFilter.getProperty(EntitySearchFilter.ORDER_PARAM));
assertEquals("true", firstFilter.getProperty(EntitySearchFilter.FILTER_TYPE_PARAM));
assertEquals("false", firstFilter.getProperty(EntitySearchFilter.LIKE_OPTION_PARAM));
assertEquals("Date", firstFilter.getProperty(EntitySearchFilter.KEY_PARAM));
}
public void testFailureConfigContentType_1() throws Throwable {
String result = this.executeConfigContentType("admin", "homepage", "1", "content_viewer_list", "");
assertEquals(Action.INPUT, result);
ContentListViewerWidgetAction action = (ContentListViewerWidgetAction) this.getAction();
Widget widget = action.getWidget();
assertNotNull(widget);
ApsProperties props = widget.getConfig();
assertEquals(0, props.size());
}
public void testFailureConfigContentType_2() throws Throwable {
String result = this.executeConfigContentType("admin", "homepage", "1", "content_viewer_list", "WRO");//Tipo contenuto inesistente
assertEquals(Action.INPUT, result);
ContentListViewerWidgetAction action = (ContentListViewerWidgetAction) this.getAction();
Widget widget = action.getWidget();
assertNotNull(widget);
ApsProperties props = widget.getConfig();
assertEquals(0, props.size());
}
public void testConfigContentType() throws Throwable {
String result = this.executeConfigContentType("admin", "homepage", "1", "content_viewer_list", "ART");
assertEquals(Action.SUCCESS, result);
ContentListViewerWidgetAction action = (ContentListViewerWidgetAction) this.getAction();
Widget widget = action.getWidget();
assertNotNull(widget);
assertEquals("content_viewer_list", widget.getType().getCode());
ApsProperties props = widget.getConfig();
assertEquals(1, props.size());
assertEquals("ART", props.getProperty("contentType"));
}
private String executeConfigListViewer(String userName, String pageCode, String frame, String showletTypeCode) throws Throwable {
this.setUserOnSession(userName);
this.initAction("/do/Page/SpecialWidget", "listViewerConfig");
this.addParameter("pageCode", pageCode);
this.addParameter("frame", frame);
if (null != showletTypeCode && showletTypeCode.trim().length()>0) {
this.addParameter("widgetTypeCode", showletTypeCode);
}
return this.executeAction();
}
private String executeConfigContentType(String userName, String pageCode, String frame, String showletTypeCode, String contentType) throws Throwable {
this.setUserOnSession(userName);
this.initAction("/do/jacms/Page/SpecialWidget/ListViewer", "configListViewer");
this.addParameter("pageCode", pageCode);
this.addParameter("frame", frame);
this.addParameter("widgetTypeCode", showletTypeCode);
if (null != contentType && contentType.trim().length()>0) {
this.addParameter("contentType", contentType);
}
return this.executeAction();
}
public void testMoveFilter() throws Throwable {
Map<String, String> paramsUp = new HashMap<String, String>();
paramsUp.put("movement","UP");
paramsUp.put("filterIndex","1");
paramsUp.put("filters", "(order=DESC;attributeFilter=true;likeOption=false;key=Date)+(order=ASC;attributeFilter=true;likeOption=false;key=Title)");
String result = this.executeMovement("admin", "homepage", "0", "content_viewer_list", paramsUp);
assertEquals(Action.SUCCESS, result);
ContentListViewerWidgetAction action = (ContentListViewerWidgetAction) this.getAction();
List<Properties> filtersProperties = action.getFiltersProperties();
assertEquals(2, filtersProperties.size());
Properties firstFilter = filtersProperties.get(1);
assertEquals("DESC", firstFilter.getProperty(EntitySearchFilter.ORDER_PARAM));
assertEquals("true", firstFilter.getProperty(EntitySearchFilter.FILTER_TYPE_PARAM));
assertEquals("false", firstFilter.getProperty(EntitySearchFilter.LIKE_OPTION_PARAM));
assertEquals("Date", firstFilter.getProperty(EntitySearchFilter.KEY_PARAM));
Map<String, String> paramsDown = new HashMap<String, String>();
paramsDown.put("movement","DOWN");
paramsDown.put("filterIndex","0");
paramsDown.put("filters", "(order=ASC;attributeFilter=true;likeOption=false;key=Title)+(order=DESC;attributeFilter=true;likeOption=false;key=Date)");
result = this.executeMovement("admin", "homepage", "0", "content_viewer_list",paramsDown);
assertEquals(Action.SUCCESS, result);
action = (ContentListViewerWidgetAction) this.getAction();
filtersProperties = action.getFiltersProperties();
assertEquals(2, filtersProperties.size());
firstFilter = filtersProperties.get(0);
assertEquals("DESC", firstFilter.getProperty(EntitySearchFilter.ORDER_PARAM));
assertEquals("true", firstFilter.getProperty(EntitySearchFilter.FILTER_TYPE_PARAM));
assertEquals("false", firstFilter.getProperty(EntitySearchFilter.LIKE_OPTION_PARAM));
assertEquals("Date", firstFilter.getProperty(EntitySearchFilter.KEY_PARAM));
}
private String executeMovement(String username, String pageCode, String frame, String showletCode, Map<String, String> params) throws Throwable {
this.setUserOnSession(username);
this.initAction("/do/jacms/Page/SpecialWidget/ListViewer", "moveFilter?movement=UP;filterIndex=1");
this.addParameters(params);
this.addParameter("pageCode", pageCode);
this.addParameter("frame", frame);
this.addParameter("widgetTypeCode", showletCode);
return this.executeAction();
}
private String executeDelFilter(String username, String pageCode, String frame, String showletCode, Map<String, String> params) throws Throwable {
this.setUserOnSession(username);
this.initAction("/do/jacms/Page/SpecialWidget/ListViewer", "removeFilter");
this.addParameters(params);
this.addParameter("pageCode", pageCode);
this.addParameter("frame", frame);
this.addParameter("widgetTypeCode", showletCode);
return this.executeAction();
}
public void testDeleteFilter() throws Throwable {
Map<String, String> params = new HashMap<String, String>();
params.put("filterIndex","1");
params.put("filters", "(order=DESC;attributeFilter=true;likeOption=false;key=Date)+(order=ASC;attributeFilter=true;likeOption=false;key=Title)");
String result = this.executeDelFilter("admin", "homepage", "0", "content_viewer_list", params);
assertEquals(Action.SUCCESS, result);
ContentListViewerWidgetAction action = (ContentListViewerWidgetAction) this.getAction();
List<Properties> filtersProperties = action.getFiltersProperties();
assertEquals(1, filtersProperties.size());
Properties firstFilter = filtersProperties.get(0);
assertEquals("DESC", firstFilter.getProperty(EntitySearchFilter.ORDER_PARAM));
assertEquals("true", firstFilter.getProperty(EntitySearchFilter.FILTER_TYPE_PARAM));
assertEquals("false", firstFilter.getProperty(EntitySearchFilter.LIKE_OPTION_PARAM));
assertEquals("Date", firstFilter.getProperty(EntitySearchFilter.KEY_PARAM));
}
public void testAddFilter() throws Throwable {
this.setUserOnSession("admin");
Map<String, String> params = new HashMap<String, String>();
params.put("pageCode", "homepage");
params.put("frame", "1");
params.put("widgetTypeCode", "content_viewer_list");
params.put("contentType", "NEW");
params.put("filters", "(order=DESC;attributeFilter=true;likeOption=false;key=Date)");
List<Properties> temp = FilterUtils.getFiltersProperties("(order=ASC;attributeFilter=true;likeOption=false;key=Title)");
assertEquals(1, temp.size());
Properties newFilter = temp.get(0);
this.initAction("/do/jacms/Page/SpecialWidget/ListViewer", "addFilter");
this.addParameters(params);
((ContentListViewerWidgetAction) this.getAction()).setNewFilter(newFilter);
String result = this.executeAction();
assertEquals(Action.SUCCESS, result);
ContentListViewerWidgetAction action = (ContentListViewerWidgetAction) this.getAction();
Widget widget = action.getWidget();
assertNotNull(widget);
assertEquals("content_viewer_list", widget.getType().getCode());
ApsProperties props = widget.getConfig();
assertEquals(2, props.size());
assertEquals("NEW", props.getProperty("contentType"));
List<Properties> filtersProperties = action.getFiltersProperties();
assertEquals(2, filtersProperties.size());
Properties firstFilter = filtersProperties.get(0);
assertEquals("DESC", firstFilter.getProperty(EntitySearchFilter.ORDER_PARAM));
assertEquals("true", firstFilter.getProperty(EntitySearchFilter.FILTER_TYPE_PARAM));
assertEquals("false", firstFilter.getProperty(EntitySearchFilter.LIKE_OPTION_PARAM));
assertEquals("Date", firstFilter.getProperty(EntitySearchFilter.KEY_PARAM));
Properties secondFilter = filtersProperties.get(1);
assertEquals("ASC", secondFilter.getProperty(EntitySearchFilter.ORDER_PARAM));
assertEquals("true", secondFilter.getProperty(EntitySearchFilter.FILTER_TYPE_PARAM));
assertEquals("false", secondFilter.getProperty(EntitySearchFilter.LIKE_OPTION_PARAM));
assertEquals("Title", secondFilter.getProperty(EntitySearchFilter.KEY_PARAM));
}
}