/* * 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.aps.system.services.content.widget; import java.util.List; import org.entando.entando.aps.system.services.widgettype.IWidgetTypeManager; import org.entando.entando.aps.system.services.widgettype.WidgetType; import com.agiletec.aps.BaseTestCase; import com.agiletec.aps.system.RequestContext; import com.agiletec.aps.system.SystemConstants; import com.agiletec.aps.system.common.entity.model.EntitySearchFilter; import com.agiletec.aps.system.services.page.IPage; import com.agiletec.aps.system.services.page.IPageManager; import com.agiletec.aps.system.services.page.Widget; import com.agiletec.aps.util.ApsProperties; import com.agiletec.aps.util.DateConverter; import com.agiletec.plugins.jacms.aps.system.JacmsSystemConstants; /** * @author E.Santoboni */ public class TestContentListHelper extends BaseTestCase { @Override protected void setUp() throws Exception { super.setUp(); this.init(); } public void testGetFilters() throws Throwable { String filtersShowletParam = "(key=DataInizio;attributeFilter=true;start=21/10/2007;order=DESC)+(key=Titolo;attributeFilter=true;order=ASC)"; EntitySearchFilter[] filters = this._helper.getFilters("EVN", filtersShowletParam, this.getRequestContext()); assertEquals(2, filters.length); EntitySearchFilter filter = filters[0]; assertEquals("DataInizio", filter.getKey()); assertEquals(DateConverter.parseDate("21/10/2007", "dd/MM/yyyy"), filter.getStart()); assertNull(filter.getEnd()); assertNull(filter.getValue()); assertEquals("DESC", filter.getOrder().toString()); } public void testGetFilters_OneDefinition() { RequestContext reqCtx = this.getRequestContext(); String contentType = "ART"; String showletParam = "(key=Titolo;attributeFilter=TRUE;start=START;end=END;like=FALSE;order=ASC)"; EntitySearchFilter[] filters = this._helper.getFilters(contentType, showletParam, reqCtx); assertNotNull(filters); assertEquals(1, filters.length); EntitySearchFilter entitySearchFilter = filters[0]; assertNotNull(entitySearchFilter); assertEquals("Titolo", entitySearchFilter.getKey()); assertEquals("START", entitySearchFilter.getStart()); assertEquals("END", entitySearchFilter.getEnd()); assertEquals("ASC", entitySearchFilter.getOrder().toString()); contentType = "ART"; showletParam = "(key=Titolo;attributeFilter=TRUE;start=START;end=END;like=FALSE;order=DESC)"; filters = this._helper.getFilters(contentType, showletParam, reqCtx); assertNotNull(filters); assertEquals(1, filters.length); entitySearchFilter = filters[0]; assertNotNull(entitySearchFilter); assertEquals("Titolo", entitySearchFilter.getKey()); assertEquals("START", entitySearchFilter.getStart()); assertEquals("END", entitySearchFilter.getEnd()); assertEquals("DESC", entitySearchFilter.getOrder().toString()); contentType = "ART"; showletParam = "(key=descr;value=VALUE;attributeFilter=FALSE;order=ASC)"; filters = this._helper.getFilters(contentType, showletParam, reqCtx); assertNotNull(filters); assertEquals(1, filters.length); entitySearchFilter = filters[0]; assertNotNull(entitySearchFilter); assertEquals("descr", entitySearchFilter.getKey()); assertEquals(null, entitySearchFilter.getStart()); assertEquals(null, entitySearchFilter.getEnd()); assertEquals("ASC", entitySearchFilter.getOrder().toString()); } public void testGetFilters_TwoDefinition() { RequestContext reqCtx = this.getRequestContext(); String contentType = "ART"; String showletParam = "(key=Titolo;attributeFilter=TRUE;start=START;end=END;like=FALSE;order=ASC)+(key=descr;value=VALUE;attributeFilter=FALSE;order=ASC)"; EntitySearchFilter[] filters = this._helper.getFilters(contentType, showletParam, reqCtx); assertNotNull(filters); assertEquals(2, filters.length); EntitySearchFilter entitySearchFilter = filters[0]; assertNotNull(entitySearchFilter); assertEquals("Titolo", entitySearchFilter.getKey()); assertEquals("START", entitySearchFilter.getStart()); assertEquals("END", entitySearchFilter.getEnd()); assertEquals("ASC", entitySearchFilter.getOrder().toString()); assertEquals(null, entitySearchFilter.getValue()); assertTrue(entitySearchFilter.isAttributeFilter()); entitySearchFilter = filters[1]; assertNotNull(entitySearchFilter); assertEquals("descr", entitySearchFilter.getKey()); assertEquals(null, entitySearchFilter.getStart()); assertEquals(null, entitySearchFilter.getEnd()); assertEquals("ASC", entitySearchFilter.getOrder().toString()); assertFalse(entitySearchFilter.isAttributeFilter()); Object obj = entitySearchFilter.getValue(); assertNotNull(obj); assertEquals(String.class, obj.getClass()); assertEquals("VALUE", (String)obj); } public void testGetContents_1() throws Throwable { String pageCode = "pagina_1"; int frame = 1; try { this.setUserOnSession("guest"); RequestContext reqCtx = this.valueRequestContext(pageCode, frame); MockContentListTagBean bean = new MockContentListTagBean(); bean.setContentType("EVN"); EntitySearchFilter filter = new EntitySearchFilter("DataInizio", true); filter.setOrder(EntitySearchFilter.DESC_ORDER); bean.addFilter(filter); List<String> contents = this._helper.getContentsId(bean, reqCtx); String[] expected = {"EVN194", "EVN193", "EVN24", "EVN23", "EVN25", "EVN20", "EVN21", "EVN192", "EVN191"}; assertEquals(expected.length, contents.size()); for (int i=0; i<expected.length; i++) { assertEquals(expected[i], contents.get(i)); } } catch (Throwable t) { throw t; } finally { IPage pagina_1 = this._pageManager.getPage(pageCode); pagina_1.getWidgets()[frame] = null; this._pageManager.updatePage(pagina_1); } } public void testGetContents_2() throws Throwable { String pageCode = "pagina_1"; int frame = 1; try { this.setUserOnSession("admin"); RequestContext reqCtx = this.valueRequestContext(pageCode, frame); MockContentListTagBean bean = new MockContentListTagBean(); bean.setContentType("EVN"); bean.addCategory("evento"); EntitySearchFilter filter = new EntitySearchFilter("DataInizio", true); filter.setOrder(EntitySearchFilter.DESC_ORDER); bean.addFilter(filter); List<String> contents = this._helper.getContentsId(bean, reqCtx); String[] expected = {"EVN193", "EVN192"}; assertEquals(expected.length, contents.size()); for (int i=0; i<expected.length; i++) { assertEquals(expected[i], contents.get(i)); } } catch (Throwable t) { throw t; } finally { IPage pagina_1 = this._pageManager.getPage(pageCode); pagina_1.getWidgets()[frame] = null; this._pageManager.updatePage(pagina_1); } } private RequestContext valueRequestContext(String pageCode, int frame) throws Throwable { RequestContext reqCtx = this.getRequestContext(); try { Widget showletToAdd = this.getShowletForTest("content_viewer_list", null); this._pageManager.joinWidget(pageCode, showletToAdd, frame); IPage page = this._pageManager.getPage(pageCode); reqCtx.addExtraParam(SystemConstants.EXTRAPAR_CURRENT_PAGE, page); Widget widget = page.getWidgets()[frame]; reqCtx.addExtraParam(SystemConstants.EXTRAPAR_CURRENT_WIDGET, widget); reqCtx.addExtraParam(SystemConstants.EXTRAPAR_CURRENT_FRAME, new Integer(frame)); } catch (Throwable t) { IPage pagina_1 = this._pageManager.getPage(pageCode); pagina_1.getWidgets()[frame] = null; this._pageManager.updatePage(pagina_1); throw t; } return reqCtx; } private Widget getShowletForTest(String showletTypeCode, ApsProperties config) throws Throwable { WidgetType type = this._showletTypeManager.getWidgetType(showletTypeCode); Widget widget = new Widget(); widget.setType(type); if (null != config) { widget.setConfig(config); } return widget; } private void init() throws Exception { try { this._pageManager = (IPageManager) this.getService(SystemConstants.PAGE_MANAGER); this._showletTypeManager = (IWidgetTypeManager) this.getService(SystemConstants.WIDGET_TYPE_MANAGER); this._helper = (IContentListWidgetHelper) this.getApplicationContext().getBean(JacmsSystemConstants.CONTENT_LIST_HELPER); } catch (Throwable t) { throw new Exception(t); } } private IPageManager _pageManager = null; private IWidgetTypeManager _showletTypeManager; private IContentListWidgetHelper _helper; }