/* * * Copyright 2005 AgileTec s.r.l. (http://www.agiletec.it) All rights reserved. * * This file is part of jAPS software. * jAPS is a free software; * you can redistribute it and/or modify it * under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2. * * See the file License for the specific language governing permissions * and limitations under the License * * * * Copyright 2005 AgileTec s.r.l. (http://www.agiletec.it) All rights reserved. * */ package test.com.agiletec.aps.system.services.page; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.sql.DataSource; import test.com.agiletec.aps.BaseTestCase; import test.com.agiletec.aps.services.mock.MockShowletsDAO; import com.agiletec.aps.system.SystemConstants; import com.agiletec.aps.system.exception.ApsSystemException; import com.agiletec.aps.system.services.group.Group; import com.agiletec.aps.system.services.page.IPage; import com.agiletec.aps.system.services.page.IPageManager; import com.agiletec.aps.system.services.page.Page; import com.agiletec.aps.system.services.page.Showlet; import com.agiletec.aps.system.services.pagemodel.PageModel; import com.agiletec.aps.system.services.showlettype.IShowletTypeManager; import com.agiletec.aps.system.services.showlettype.ShowletType; import com.agiletec.aps.util.ApsProperties; /** * @author M.Diana */ public class TestPageManager extends BaseTestCase { protected void setUp() throws Exception { super.setUp(); this.init(); } public void testAddUpdateMoveDeletePage() throws Throwable { try { _pageManager.deletePage("temp"); _pageManager.deletePage("temp1"); _pageManager.deletePage("temp2"); } catch (Throwable t) { throw t; } Page page = new Page(); page.setCode("temp"); IPage parentPage = _pageManager.getPage("service"); assertNotNull(parentPage); page.setParent(parentPage); page.setParentCode(parentPage.getCode()); PageModel pageModel = parentPage.getModel(); assertNotNull(pageModel); page.setModel(pageModel); page.setGroup("free"); page.setShowable(true); page.setTitle("it", "temptitle"); ApsProperties titles = new ApsProperties(); titles.setProperty("it", "pagina temporanea"); page.setTitles(titles); Showlet showlet = new Showlet(); ApsProperties config = new ApsProperties(); config.setProperty("temp", "temp"); showlet.setConfig(config); showlet.setPublishedContent("ART1"); ShowletType showletType = new ShowletType(); showletType.setCode("content_viewer"); showlet.setType(showletType); Showlet[] showlets = {showlet}; page.setShowlets(showlets); _pageManager.addPage(page); parentPage = _pageManager.getPage("service"); page.setParent(parentPage); page.setCode("temp1"); _pageManager.addPage(page); parentPage = _pageManager.getPage("service"); page.setParent(parentPage); page.setCode("temp2"); _pageManager.addPage(page); IPage extractedPage = _pageManager.getPage("temp"); assertNotNull(extractedPage); assertEquals(extractedPage.getCode(), "temp"); assertEquals(extractedPage.getGroup(), "free"); assertEquals(extractedPage.getTitle("it"), "pagina temporanea"); assertEquals(extractedPage.getModel().getCode(), "service"); assertEquals(extractedPage.isShowable(), true); showlets = extractedPage.getShowlets(); boolean contains = showlets[0].getConfig().contains("temp"); assertEquals(contains, true); assertEquals(showlets[0].getPublishedContent(), "ART1"); assertEquals(showlets[0].getType().getCode(), "content_viewer"); this.updatePage(); this.movePage(); this.deletePage(); } private void updatePage() throws Exception { Page page = new Page(); page.setCode("temp"); IPage parentPage = _pageManager.getPage("service"); assertNotNull(parentPage); page.setParent(parentPage); page.setParentCode(parentPage.getCode()); PageModel pageModel = parentPage.getModel(); assertNotNull(pageModel); page.setModel(pageModel); page.setGroup("free"); page.setShowable(false); page.setTitle("en", "temptitle1"); ApsProperties titles = new ApsProperties(); titles.setProperty("it", "pagina temporanea1"); page.setTitles(titles); Showlet showlet = new Showlet(); ApsProperties config = new ApsProperties(); config.setProperty("temp1", "temp1"); showlet.setConfig(config); showlet.setPublishedContent("ART1"); ShowletType showletType = new ShowletType(); showletType.setCode("content_viewer"); showlet.setType(showletType); Showlet[] showlets = {showlet}; page.setShowlets(showlets); _pageManager.updatePage(page); IPage extractedPage = _pageManager.getPage("temp"); assertNotNull(extractedPage); assertEquals(extractedPage.getCode(), "temp"); assertEquals(extractedPage.getGroup(), "free"); assertEquals(extractedPage.getTitle("it"), "pagina temporanea1"); assertEquals(extractedPage.getModel().getCode(), "service"); assertEquals(extractedPage.isShowable(), false); showlets = extractedPage.getShowlets(); boolean contains = showlets[0].getConfig().contains("temp1"); assertEquals(contains, true); assertEquals(showlets[0].getPublishedContent(), "ART1"); assertEquals(showlets[0].getType().getCode(), "content_viewer"); } private void movePage() throws Exception { _pageManager.deletePage("temp1"); boolean moveUp = true; _pageManager.movePage("temp2", moveUp); IPage page = _pageManager.getPage("temp2"); IPage[] pages = page.getParent().getChildren(); int len = pages.length; page = pages[len - 2]; assertEquals(page.getCode(), "temp2"); moveUp = false; _pageManager.movePage("temp2", moveUp); page = _pageManager.getPage("temp2"); pages = page.getParent().getChildren(); page = pages[len - 1]; assertEquals(page.getCode(), "temp2"); } private void deletePage() throws Throwable { DataSource dataSource = (DataSource) this.getApplicationContext().getBean("portDataSource"); MockShowletsDAO mockShowletsDAO = new MockShowletsDAO(); mockShowletsDAO.setDataSource(dataSource); _pageManager.deletePage("temp"); _pageManager.deletePage("temp2"); IPage page = _pageManager.getPage("temp"); assertNull(page); boolean exists = true; try { exists = mockShowletsDAO.exists("temp"); assertEquals(exists, false); exists = mockShowletsDAO.exists("temp2"); assertEquals(exists, false); } catch (Throwable e) { throw e; } } public void testFailureJoinShowlet_1() throws Throwable { String pageCode = "wrongPageCode"; int frame = 2; try { Showlet showlet = this.getShowletForTest("login", null); this._pageManager.joinShowlet(pageCode, showlet, frame); fail(); } catch (ApsSystemException e) { //Errore per pagina inesistente } catch (Throwable t) { throw t; } } public void testFailureJoinShowlet_2() throws Throwable { String pageCode = "pagina_1"; int frame = 6; IPage pagina_1 = this._pageManager.getPage(pageCode); assertTrue(pagina_1.getShowlets().length<=frame); try { Showlet showlet = this.getShowletForTest("login", null); this._pageManager.joinShowlet(pageCode, showlet, frame); fail(); } catch (ApsSystemException e) { //Errore per frame errato in modello } catch (Throwable t) { throw t; } finally { this._pageManager.updatePage(pagina_1); } } public void testFailureRemoveShowlet_1() throws Throwable { String pageCode = "wrongPageCode"; int frame = 2; try { this._pageManager.removeShowlet(pageCode, frame); fail(); } catch (ApsSystemException e) { //Errore per pagina inesistente } catch (Throwable t) { throw t; } } public void testFailureRemoveShowlet_2() throws Throwable { String pageCode = "pagina_1"; int frame = 6; IPage pagina_1 = this._pageManager.getPage(pageCode); assertTrue(pagina_1.getShowlets().length<=frame); try { this._pageManager.removeShowlet(pageCode, frame); fail(); } catch (ApsSystemException e) { //Errore per frame errato in modello } catch (Throwable t) { throw t; } } public void testJoinRemoveShowlet() throws Throwable { String pageCode = "pagina_1"; int frame = 1; IPage pagina_1 = this._pageManager.getPage(pageCode); assertNull(pagina_1.getShowlets()[frame]); try { Showlet showlet = this.getShowletForTest("login_form", null); this._pageManager.joinShowlet(pageCode, showlet, frame); pagina_1 = this._pageManager.getPage(pageCode); Showlet extracted = pagina_1.getShowlets()[frame]; assertNotNull(extracted); assertEquals("login_form", extracted.getType().getCode()); this._pageManager.removeShowlet(pageCode, frame); pagina_1 = this._pageManager.getPage(pageCode); extracted = pagina_1.getShowlets()[frame]; assertNull(extracted); } catch (Throwable t) { pagina_1.getShowlets()[frame] = null; this._pageManager.updatePage(pagina_1); throw t; } } public void testSearchPage() throws Throwable { List<String> allowedGroupCodes = new ArrayList<String>(); allowedGroupCodes.add(Group.ADMINS_GROUP_NAME); try { List<IPage> pagesFound = this._pageManager.searchPages("aGIna_", allowedGroupCodes); assertNotNull(pagesFound); assertEquals(4, pagesFound.size()); String pageCodeToken = "agina"; pagesFound = this._pageManager.searchPages(pageCodeToken, allowedGroupCodes); // verify the result found assertNotNull(pagesFound); Iterator<IPage> itr = pagesFound.iterator(); assertEquals(5, pagesFound.size()); while (itr.hasNext()) { IPage currentCode = itr.next(); assertTrue(currentCode.getCode().contains(pageCodeToken)); } pagesFound = this._pageManager.searchPages("", allowedGroupCodes); assertNotNull(pagesFound); assertEquals(16, pagesFound.size()); pagesFound = this._pageManager.searchPages(null, allowedGroupCodes); assertNotNull(pagesFound); assertEquals(16, pagesFound.size()); } catch (Throwable t) { throw t; } } public void testGetShowletUtilizers() throws Throwable { List<IPage> pageUtilizers1 = this._pageManager.getShowletUtilizers(null); assertNotNull(pageUtilizers1); assertEquals(0, pageUtilizers1.size()); List<IPage> pageUtilizers2 = this._pageManager.getShowletUtilizers("logic_type"); assertNotNull(pageUtilizers2); assertEquals(0, pageUtilizers2.size()); List<IPage> pageUtilizers3 = this._pageManager.getShowletUtilizers("leftmenu"); assertNotNull(pageUtilizers3); assertEquals(1, pageUtilizers3.size()); assertEquals("pagina_1", pageUtilizers3.get(0).getCode()); List<IPage> pageUtilizers4 = this._pageManager.getShowletUtilizers("content_viewer"); assertNotNull(pageUtilizers4); assertEquals(7, pageUtilizers4.size()); assertEquals("homepage", pageUtilizers4.get(0).getCode()); assertEquals("contentview", pageUtilizers4.get(1).getCode()); assertEquals("pagina_11", pageUtilizers4.get(2).getCode()); assertEquals("pagina_2", pageUtilizers4.get(3).getCode()); assertEquals("coach_page", pageUtilizers4.get(4).getCode()); assertEquals("customers_page", pageUtilizers4.get(5).getCode()); assertEquals("customer_subpage_2", pageUtilizers4.get(6).getCode()); } private Showlet getShowletForTest(String showletTypeCode, ApsProperties config) throws Throwable { ShowletType type = this._showletTypeManager.getShowletType(showletTypeCode); Showlet showlet = new Showlet(); showlet.setType(type); if (null != config) { showlet.setConfig(config); } return showlet; } private void init() throws Exception { try { this._pageManager = (IPageManager) this.getService(SystemConstants.PAGE_MANAGER); this._showletTypeManager = (IShowletTypeManager) this.getService(SystemConstants.SHOWLET_TYPE_MANAGER); } catch (Throwable t) { throw new Exception(t); } } private IPageManager _pageManager = null; private IShowletTypeManager _showletTypeManager; }