/* * 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.aps.system.services.page.showlet; import java.util.List; import com.agiletec.aps.BaseTestCase; import com.agiletec.aps.system.RequestContext; import com.agiletec.aps.system.SystemConstants; import com.agiletec.aps.system.services.page.IPage; import com.agiletec.aps.system.services.page.IPageManager; import com.agiletec.aps.system.services.page.widget.INavigatorParser; import com.agiletec.aps.system.services.page.widget.NavigatorTarget; /** * @version 1.0 * @author E.Santoboni */ public class TestNavigatorParser extends BaseTestCase { protected void setUp() throws Exception { super.setUp(); this.init(); } public void testGetTargets_1() throws Throwable { RequestContext reqCtx = this.valueRequestContext("pagina_11", "admin"); String spec = "current.path"; List<NavigatorTarget> targets = this._navigatorParser.parseSpec(spec, reqCtx); assertEquals(3, targets.size()); NavigatorTarget target0 = targets.get(0); assertEquals("homepage", target0.getPage().getCode()); NavigatorTarget target1 = targets.get(1); assertEquals("pagina_1", target1.getPage().getCode()); NavigatorTarget target2 = targets.get(2); assertEquals("pagina_11", target2.getPage().getCode()); } public void testGetTargets_2() throws Throwable { RequestContext reqCtx = this.valueRequestContext("contentview", "admin"); String spec = "current.path"; List<NavigatorTarget> targets = this._navigatorParser.parseSpec(spec, reqCtx); assertEquals(2, targets.size()); NavigatorTarget target0 = targets.get(0); assertEquals("homepage", target0.getPage().getCode()); NavigatorTarget target1 = targets.get(1); assertEquals("contentview", target1.getPage().getCode()); } public void testGetTargets_3() throws Throwable { RequestContext reqCtx = this.valueRequestContext("pagina_11", SystemConstants.GUEST_USER_NAME); String spec = "abs(0).subtree(2)"; List<NavigatorTarget> targets = this._navigatorParser.parseSpec(spec, reqCtx); assertEquals(5, targets.size()); NavigatorTarget target0 = targets.get(0); assertEquals("homepage", target0.getPage().getCode()); assertEquals(0, target0.getLevel()); NavigatorTarget target1 = targets.get(1); assertEquals("pagina_1", target1.getPage().getCode()); assertEquals(1, target1.getLevel()); NavigatorTarget target2 = targets.get(2); assertEquals("pagina_11", target2.getPage().getCode()); assertEquals(2, target2.getLevel()); NavigatorTarget target3 = targets.get(3); assertEquals("pagina_12", target3.getPage().getCode()); assertEquals(2, target3.getLevel()); NavigatorTarget target4 = targets.get(4); assertEquals("pagina_2", target4.getPage().getCode()); assertEquals(1, target4.getLevel()); } public void testGetTargets_4() throws Throwable { RequestContext reqCtx = this.valueRequestContext("pagina_11", "editorCustomers"); String spec = "code(homepage).children"; List<NavigatorTarget> targets = this._navigatorParser.parseSpec(spec, reqCtx); assertEquals(3, targets.size()); NavigatorTarget target0 = targets.get(0); assertEquals("pagina_1", target0.getPage().getCode()); assertEquals(0, target0.getLevel()); NavigatorTarget target1 = targets.get(1); assertEquals("pagina_2", target1.getPage().getCode()); assertEquals(0, target1.getLevel()); NavigatorTarget target2 = targets.get(2); assertEquals("customers_page", target2.getPage().getCode()); assertEquals(0, target2.getLevel()); } public void testGetTargets_5() throws Throwable { RequestContext reqCtx = this.valueRequestContext("pagina_1", "editorCoach"); String spec = "current.subtree(1)+parent.children"; List<NavigatorTarget> targets = this._navigatorParser.parseSpec(spec, reqCtx); assertEquals(7, targets.size()); NavigatorTarget target0 = targets.get(0); assertEquals("pagina_1", target0.getPage().getCode()); assertEquals(0, target0.getLevel()); NavigatorTarget target1 = targets.get(1); assertEquals("pagina_11", target1.getPage().getCode()); assertEquals(1, target1.getLevel()); NavigatorTarget target2 = targets.get(2); assertEquals("pagina_12", target2.getPage().getCode()); assertEquals(1, target2.getLevel()); NavigatorTarget target3 = targets.get(3); assertEquals("pagina_1", target3.getPage().getCode()); assertEquals(0, target3.getLevel()); NavigatorTarget target4 = targets.get(4); assertEquals("pagina_2", target4.getPage().getCode()); assertEquals(0, target4.getLevel()); NavigatorTarget target5 = targets.get(5); assertEquals("coach_page", target5.getPage().getCode()); assertEquals(0, target5.getLevel()); NavigatorTarget target6 = targets.get(6); assertEquals("customers_page", target6.getPage().getCode()); assertEquals(0, target6.getLevel()); } private RequestContext valueRequestContext(String currentPageCode, String currentUserName) throws Throwable { RequestContext reqCtx = this.getRequestContext(); this.setUserOnSession(currentUserName); IPage currentPage = this._pageManager.getPage(currentPageCode); reqCtx.addExtraParam(SystemConstants.EXTRAPAR_CURRENT_PAGE, currentPage); return reqCtx; } private void init() throws Exception { this._pageManager = (IPageManager) this.getService(SystemConstants.PAGE_MANAGER); this._navigatorParser = (INavigatorParser) this.getApplicationContext().getBean(SystemConstants.NAVIGATOR_PARSER); } private IPageManager _pageManager; private INavigatorParser _navigatorParser; }