/* * 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; import java.util.List; import javax.sql.DataSource; 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.SystemConstants; import com.agiletec.aps.system.services.pagemodel.IPageModelManager; import com.agiletec.aps.system.services.pagemodel.PageModel; import com.agiletec.aps.util.ApsProperties; /** * @author M.Diana */ public class TestPageDAO extends BaseTestCase { @Override protected void setUp() throws Exception { super.setUp(); this.init(); } public void testLoadPageList() throws Throwable { try { List<IPage> pages = _pageDao.loadPages(); String value = null; boolean contains = false; for (int i=0; i<pages.size(); i++) { IPage page = pages.get(i); value = page.getCode(); if (value.equals("homepage")) { contains = true; } } assertTrue(contains); } catch (Throwable t) { throw t; } } public void testAddUpdateDeletePage() throws Throwable { Page newPageForTest = this.createPageForTest("temp"); IPage extractedPage = null; try { List<IPage> pages = this._pageDao.loadPages(); for (int i=0; i<pages.size(); i++) { IPage page = pages.get(i); if (page.getCode().equals("temp")) { extractedPage = page; break; } } assertNull(extractedPage); this._pageDao.addPage(newPageForTest); pages = this._pageDao.loadPages(); for (int i=0; i<pages.size(); i++) { IPage page = pages.get(i); if (page.getCode().equals("temp")) { extractedPage = page; break; } } assertNotNull(extractedPage); assertEquals(extractedPage.getCode(), "temp"); assertEquals(extractedPage.getGroup(), "free"); assertEquals(extractedPage.getTitle("it"), "pagina temporanea"); assertEquals(extractedPage.getModel().getCode(), "service"); assertTrue(extractedPage.isShowable()); Widget[] widgets = extractedPage.getWidgets(); assertTrue(widgets[0].getConfig().containsKey("temp")); assertEquals(widgets[0].getType().getCode(), "content_viewer"); this.updatePage(extractedPage, this._pageDao); } catch (Throwable t) { throw t; } finally { Page pageToDelete = (null != extractedPage) ? (Page) extractedPage : newPageForTest; this.deletePage(pageToDelete, _pageDao); } } private void updatePage(IPage ipageToUpdate, PageDAO pageDAO) throws Throwable { Page pageToUpdate = (Page) ipageToUpdate; pageToUpdate.setTitle("it", "pagina temporanea1"); pageToUpdate.setShowable(false); Widget widget = new Widget(); ApsProperties config = new ApsProperties(); config.setProperty("temp1", "temp1"); config.setProperty("contentId", "ART11"); widget.setConfig(config); WidgetType widgetType = new WidgetType(); widgetType.setCode("content_viewer"); widget.setType(widgetType); Widget[] modifiesWidgets = {widget}; pageToUpdate.setWidgets(modifiesWidgets); try { pageDAO.updatePage(pageToUpdate); List<IPage> pages = pageDAO.loadPages(); IPage extractedPage = null; for (int i=0; i<pages.size(); i++) { IPage page = pages.get(i); if (page.getCode().equals("temp")) { extractedPage = page; } } assertNotNull(extractedPage); assertEquals(extractedPage.getCode(), "temp"); assertEquals(extractedPage.getGroup(), "free"); assertEquals(extractedPage.getTitle("it"), "pagina temporanea1"); assertEquals(extractedPage.getModel().getCode(), "service"); assertFalse(extractedPage.isShowable()); Widget[] widgets = extractedPage.getWidgets(); ApsProperties extractedConfig = widgets[0].getConfig(); assertTrue(extractedConfig.containsKey("temp1")); assertTrue(extractedConfig.containsKey("contentId")); assertEquals(widgets[0].getType().getCode(), "content_viewer"); } catch (Throwable t) { throw t; } } private void deletePage(Page page, PageDAO pageDAO) throws Throwable { try { pageDAO.deletePage(page); } catch (Throwable e) { throw e; } List<IPage> pages = null; try { pages = pageDAO.loadPages(); } catch (Throwable t) { throw t; } IPage currentPage = null; String value = null; boolean contains = false; for (int i=0; i<pages.size(); i++) { currentPage = pages.get(i); value = currentPage.getCode(); if (value.equals("temp")) { contains = true; } } assertFalse(contains); } private Page createPageForTest(String code) { Page page = new Page(); page.setCode(code); IPage parentPage = this._pageManager.getPage("service"); page.setParent(parentPage); page.setParentCode("service"); PageModel pageModel = new PageModel(); pageModel.setCode("service"); 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); Widget widget = new Widget(); ApsProperties config = new ApsProperties(); config.setProperty("temp", "temp"); config.setProperty("contentId", "ART1"); widget.setConfig(config); WidgetType widgetType = new WidgetType(); widgetType.setCode("content_viewer"); widget.setType(widgetType); Widget[] widgets = {widget}; page.setWidgets(widgets); return page; } private void init() throws Exception { try { DataSource dataSource = (DataSource) this.getApplicationContext().getBean("portDataSource"); this._pageDao = new PageDAO(); this._pageDao.setDataSource(dataSource); this._pageManager = (IPageManager) this.getService(SystemConstants.PAGE_MANAGER); IPageModelManager pageModelManager = (IPageModelManager) this.getService(SystemConstants.PAGE_MODEL_MANAGER); IWidgetTypeManager showletTypeManager = (IWidgetTypeManager) this.getService(SystemConstants.WIDGET_TYPE_MANAGER); this._pageDao.setPageModelManager(pageModelManager); this._pageDao.setWidgetTypeManager(showletTypeManager); } catch (Throwable e) { throw new Exception(e); } } private PageDAO _pageDao; private IPageManager _pageManager; }