Package org.entando.entando.plugins.jpcmstagcloud.aps.system.services.tagcloud

Source Code of org.entando.entando.plugins.jpcmstagcloud.aps.system.services.tagcloud.TestTagCloudManager

/*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
* This file is part of Entando software.
* Entando 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 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
*/
package org.entando.entando.plugins.jpcmstagcloud.aps.system.services.tagcloud;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Iterator;

import javax.sql.DataSource;

import com.agiletec.aps.system.SystemConstants;
import com.agiletec.aps.system.common.tree.ITreeNode;
import com.agiletec.aps.system.exception.ApsSystemException;
import com.agiletec.aps.system.services.baseconfig.ConfigInterface;
import com.agiletec.aps.system.services.category.Category;
import com.agiletec.aps.system.services.lang.ILangManager;
import com.agiletec.aps.system.services.user.IUserManager;
import com.agiletec.aps.system.services.user.UserDetails;
import com.agiletec.plugins.jacms.aps.system.JacmsSystemConstants;
import com.agiletec.plugins.jacms.aps.system.services.content.ContentDAO;
import com.agiletec.plugins.jacms.aps.system.services.content.IContentDAO;
import com.agiletec.plugins.jacms.aps.system.services.content.IContentManager;
import com.agiletec.plugins.jacms.aps.system.services.content.model.Content;
import com.agiletec.plugins.jpcmstagcloud.aps.system.JpcmstagcloudSystemConstants;
import com.agiletec.plugins.jpcmstagcloud.aps.system.services.tagcloud.ITagCloudManager;
import org.entando.entando.plugins.jpcmstagcloud.aps.ApsPluginBaseTestCase;

/**
* @author E.Santoboni
*/
public class TestTagCloudManager extends ApsPluginBaseTestCase {

  @Override
  protected void setUp() throws Exception {
    super.setUp();
    this.init();
    this.addFakeContents();
  }

  @Override
  protected void tearDown() throws Exception {
    this.removeFakeContents();
    super.tearDown();
  }

  public void testLoadPublicTaggedContentsId() throws Throwable {
    UserDetails user = this.getUser("admin");
    List<String> contentIds = this._tagCloudManager.loadPublicTaggedContentsId("cat1", user);
    compareIds(new String[]{"ART180"}, contentIds);

    contentIds = this._tagCloudManager.loadPublicTaggedContentsId("evento", user);
    compareIds(new String[]{"EVN192", "EVN193", "RAH101b", "ART120b"}, contentIds);

    user = this.getUser("editorCoach");
    contentIds = this._tagCloudManager.loadPublicTaggedContentsId("evento", user);
    compareIds(new String[]{"EVN192", "EVN193", "RAH101b"}, contentIds);
  }

  public void testGetCloudInfos() throws Throwable {
    UserDetails user = this.getUser("admin");
    Map<String, Integer> expected = new HashMap<String, Integer>();
    expected.put("cat1", new Integer(1));
    expected.put("evento", new Integer(4));
    expected.put("general", new Integer(5));

    Map<ITreeNode, Integer> cloudInfos = this._tagCloudManager.getCloudInfos(user);
    this.compareCloudInfos(expected, cloudInfos);

    user = this.getUser("editorCoach");
    expected.put("cat1", new Integer(1));
    expected.put("evento", new Integer(3));
    expected.put("general", new Integer(3));
    cloudInfos = this._tagCloudManager.getCloudInfos(user);
    this.compareCloudInfos(expected, cloudInfos);

    user = this._userManager.getGuestUser();
    expected.put("cat1", new Integer(1));
    expected.put("evento", new Integer(2));
    expected.remove("general");
    cloudInfos = this._tagCloudManager.getCloudInfos(user);
    this.compareCloudInfos(expected, cloudInfos);
  }

  private void compareIds(String[] expected, List<String> received) {
    assertEquals(expected.length, received.size());
    for (int i = 0; i < expected.length; i++) {
      String id = expected[i];
      if (!received.contains(id)) {
        fail("Expected " + id + " - not found in " + received.toString());
      }
    }
  }

  private void compareCloudInfos(Map<String, Integer> expected, Map<ITreeNode, Integer> received) {
    Iterator<ITreeNode> iter = received.keySet().iterator();
    while (iter.hasNext()) {
      ITreeNode node = iter.next();
      String key = node.getCode();
      Integer expectedSize = expected.get(key);
      if (expectedSize != null) {
        assertEquals(expectedSize.intValue(), received.get(node).intValue());
      }
    }
  }

  private void addFakeContents() throws ApsSystemException {
    Content masterContent = this._contentManager.loadContent("EVN193", true);

    Content content1 = this._contentManager.loadContent("RAH101", true);
    content1.setId("RAH101b");
    for (Category category : masterContent.getCategories()) {
      content1.addCategory(category);
    }
    this._contentDao.addEntity(content1);
    this._contentDao.insertOnLineContent(content1);

    Content content2 = this._contentManager.loadContent("ART120", true);
    content2.setId("ART120b");
    for (int i = 0; i < masterContent.getCategories().size(); i++) {
      Category category = masterContent.getCategories().get(i);
      content2.addCategory(category);
    }
    this._contentDao.addEntity(content2);
    this._contentDao.insertOnLineContent(content2);
  }

  private void removeFakeContents() {
    this._contentDao.deleteEntity("RAH101b");
    this._contentDao.deleteEntity("ART120b");
  }

  private void init() throws Exception {
    try {
      this._tagCloudManager = (ITagCloudManager) this.getService(JpcmstagcloudSystemConstants.TAG_CLOUD_MANAGER);
      this._userManager = (IUserManager) this.getService(SystemConstants.USER_MANAGER);
      this._contentManager = (IContentManager) this.getService(JacmsSystemConstants.CONTENT_MANAGER);
      ContentDAO contentDao = new ContentDAO();
      DataSource dataSource = (DataSource) this.getApplicationContext().getBean("portDataSource");
      contentDao.setDataSource(dataSource);
      ILangManager langManager = (ILangManager) this.getService(SystemConstants.LANGUAGE_MANAGER);
      contentDao.setLangManager(langManager);
      this._contentDao = contentDao;

      ConfigInterface configManager = (ConfigInterface) this.getService(SystemConstants.BASE_CONFIG_MANAGER);
      configManager.updateConfigItem(SystemConstants.CONFIG_ITEM_PARAMS, TEST_CONFIG);
    } catch (Throwable t) {
      throw new Exception(t);
    }
  }
  private ITagCloudManager _tagCloudManager;
  private IContentDAO _contentDao;
  private IContentManager _contentManager;
  private IUserManager _userManager;
  private String TEST_CONFIG = "<Params>"
      + "<Param name=\"urlStyle\">classic</Param>"
      + "<Param name=\"hypertextEditor\">fckeditor</Param>"
      + "<Param name=\"treeStyle_page\">classic</Param>"
      + "<Param name=\"treeStyle_category\">classic</Param>"
      + "<Param name=\"startLangFromBrowser\">false</Param>"
      + "<SpecialPages>"
      + "<Param name=\"notFoundPageCode\">notfound</Param>"
      + "<Param name=\"homePageCode\">homepage</Param>"
      + "<Param name=\"errorPageCode\">errorpage</Param>"
      + "<Param name=\"loginPageCode\">login</Param>"
      + "</SpecialPages>"
      + "<ExtendendPrivacyModule>"
      + "<Param name=\"extendedPrivacyModuleEnabled\">false</Param>"
      + "<Param name=\"maxMonthsSinceLastAccess\">6</Param>"
      + "<Param name=\"maxMonthsSinceLastPasswordChange\">3</Param>        "
      + "</ExtendendPrivacyModule>"
      + "<ExtraParams>"
      + "<Param name=\"jpcmstagcloud_delayDays\" >20000</Param>"
      + "<Param name=\"jpcmstagcloud_categoryRoot\" >home</Param>"
      + "</ExtraParams>"
      + "</Params>";
}
TOP

Related Classes of org.entando.entando.plugins.jpcmstagcloud.aps.system.services.tagcloud.TestTagCloudManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.