/* * Copyright (C) 2003-2009 eXo Platform SAS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see<http://www.gnu.org/licenses/>. */ package org.exoplatform.services.wcm.search.base; import java.util.Date; import java.util.HashMap; import javax.jcr.Node; import javax.jcr.NodeIterator; import org.exoplatform.component.test.ConfigurationUnit; import org.exoplatform.component.test.ConfiguredBy; import org.exoplatform.component.test.ContainerScope; import org.exoplatform.ecms.test.BaseECMSTestCase; import org.exoplatform.portal.config.UserPortalConfigService; import org.exoplatform.portal.mop.SiteKey; import org.exoplatform.portal.mop.page.PageContext; import org.exoplatform.portal.mop.page.PageKey; import org.exoplatform.portal.mop.page.PageService; import org.exoplatform.portal.mop.page.PageState; import org.exoplatform.portal.pom.config.POMSession; import org.exoplatform.portal.pom.config.POMSessionManager; import org.exoplatform.services.jcr.ext.common.SessionProvider; import org.exoplatform.services.wcm.publication.PublicationDefaultStates; import org.exoplatform.services.wcm.publication.WCMPublicationService; import org.exoplatform.services.wcm.publication.WebpagePublicationPlugin; import org.exoplatform.services.wcm.search.DumpPublicationPlugin; import org.exoplatform.services.wcm.search.QueryCriteria; import org.exoplatform.services.wcm.search.SiteSearchService; import org.exoplatform.services.wcm.utils.WCMCoreUtils; /** * Created by The eXo Platform SAS * Author : eXoPlatform * chuong.phan@exoplatform.com, phan.le.thanh.chuong@gmail.com * Jul 14, 2009 */ @ConfiguredBy({ @ConfigurationUnit(scope = ContainerScope.PORTAL, path = "conf/exo.portal.component.portal-configuration.xml"), @ConfigurationUnit(scope = ContainerScope.PORTAL, path = "conf/exo.portal.component.identity-configuration.xml"), @ConfigurationUnit(scope = ContainerScope.PORTAL, path = "conf/standalone/ecms-test-configuration.xml"), @ConfigurationUnit(scope = ContainerScope.PORTAL, path = "conf/wcm/test-search-configuration.xml") }) public class BaseSearchTest extends BaseECMSTestCase { protected QueryCriteria queryCriteria = new QueryCriteria(); protected SiteSearchService siteSearchService; protected WCMPublicationService wcmPublicationService; protected WebpagePublicationPlugin publicationPlugin ; protected UserPortalConfigService userPortalConfigService; protected final String searchKeyword = "This is"; protected final String duplicationSearchKeyword = "duplication searchKey"; protected SessionProvider sessionProvider; protected POMSessionManager pomManager; protected POMSession pomSession; protected int seachItemsPerPage = 100; protected static int numberOfRunTests = 0; public void setUp() throws Exception { super.setUp(); siteSearchService = WCMCoreUtils.getService(SiteSearchService.class); userPortalConfigService = WCMCoreUtils.getService(UserPortalConfigService.class); pomManager = WCMCoreUtils.getService(POMSessionManager.class); sessionProvider = WCMCoreUtils.getSystemSessionProvider(); wcmPublicationService = WCMCoreUtils.getService(WCMPublicationService.class); publicationPlugin = new DumpPublicationPlugin(); publicationPlugin.setName(DumpPublicationPlugin.LIFECYCLE_NAME); wcmPublicationService.addPublicationPlugin(publicationPlugin); applySystemSession(); addDocuments(); numberOfRunTests++; } protected void addDocuments() throws Exception { Node classicPortal = getNode("sites content/live/classic/web contents"); addChildNodes(classicPortal); Node sharedPortal = getNode("sites content/live/shared/documents"); addChildNodes(sharedPortal); Node acmePortal = getNode("sites content/live/acme"); if (numberOfRunTests == 0) { // Populate 20 webContent nodes under classic site without being enrolled in publication lifecycle populateAdditionalSearchData(acmePortal, "web contents", 20); // Populate 101 document nodes under classic site without being enrolled in publication lifecycle populateAdditionalSearchData(acmePortal, "documents", 101); } } protected Node getNode(String path) throws Exception { Node root = session.getRootNode(); for (String name : path.split("/")) { if (root.hasNode(name)) { root = root.getNode(name); } else { Node tmp = root.addNode(name); session.save(); root = tmp; } } return root; } protected void addChildNodes(Node parentNode)throws Exception{ } /* * Create additional data for search under a specific site and a specific node. */ protected void populateAdditionalSearchData(Node siteNode, String parentNode, int nodesCount) {} public void tearDown() throws Exception { NodeIterator iterator = null; if (session.itemExists("/sites content/live/classic/web contents")) { Node classicPortal = (Node)session.getItem("/sites content/live/classic/web contents"); iterator = classicPortal.getNodes(); while (iterator.hasNext()) { iterator.nextNode().remove(); } } if (session.itemExists("/sites content/live/shared/documents")) { Node sharedPortal = (Node)session.getItem("/sites content/live/shared/documents"); iterator = sharedPortal.getNodes(); while (iterator.hasNext()) { iterator.nextNode().remove(); } } session.save(); super.tearDown(); } public void testNone() throws Exception{ //empty test function to avoid failure of BaseSearchTest with no test case when build } }