/*
* Copyright (C) 2011 eXo Platform SAS.
*
* This 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 software 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.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.exoplatform.web.portal;
import java.util.List;
import java.util.Locale;
import org.exoplatform.component.test.ConfigurationUnit;
import org.exoplatform.component.test.ConfiguredBy;
import org.exoplatform.component.test.ContainerScope;
import org.exoplatform.portal.AbstractPortalTest;
import org.exoplatform.portal.config.UserPortalConfig;
import org.exoplatform.portal.config.UserPortalConfigService;
import org.exoplatform.portal.mop.SiteKey;
import org.exoplatform.portal.mop.navigation.NavigationContext;
import org.exoplatform.portal.mop.navigation.NavigationService;
import org.exoplatform.portal.mop.navigation.NavigationState;
import org.exoplatform.portal.mop.navigation.NodeContext;
import org.exoplatform.portal.mop.navigation.NodeModel;
import org.exoplatform.portal.mop.navigation.Scope;
import org.exoplatform.portal.mop.user.SimpleUserPortalContext;
import org.exoplatform.portal.mop.user.UserNavigation;
import org.exoplatform.portal.mop.user.UserPortal;
import org.exoplatform.services.resources.Orientation;
import org.exoplatform.web.application.RequestContext;
import org.exoplatform.web.application.URLBuilder;
import org.exoplatform.web.url.PortalURL;
import org.exoplatform.web.url.ResourceType;
import org.exoplatform.web.url.URLFactory;
/**
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
*/
@ConfiguredBy({
@ConfigurationUnit(scope = ContainerScope.PORTAL, path = "conf/exo.portal.component.test.jcr-configuration.xml"),
@ConfigurationUnit(scope = ContainerScope.PORTAL, path = "conf/exo.portal.component.identity-configuration.xml"),
@ConfigurationUnit(scope = ContainerScope.PORTAL, path = "conf/exo.portal.component.portal-configuration.xml"),
@ConfigurationUnit(scope = ContainerScope.PORTAL, path = "org/exoplatform/web/portal/configuration.xml") })
public class TestRefreshCurrentUserPortal extends AbstractPortalTest {
/** . */
private RequestContext requestContext;
/** . */
private UserPortal userPortal;
@Override
protected void setUp() throws Exception {
begin();
UserPortalConfigService upcs = (UserPortalConfigService) getContainer().getComponentInstanceOfType(
UserPortalConfigService.class);
UserPortalConfig upc = upcs.getUserPortalConfig("classic", "root", new SimpleUserPortalContext(Locale.ENGLISH));
final UserPortal userPortal = upc.getUserPortal();
//
RequestContext requestContext = new RequestContext(null) {
@Override
public URLFactory getURLFactory() {
throw new UnsupportedOperationException();
}
@Override
public <R, U extends PortalURL<R, U>> U newURL(ResourceType<R, U> resourceType, URLFactory urlFactory) {
throw new UnsupportedOperationException();
}
@Override
public Orientation getOrientation() {
throw new UnsupportedOperationException();
}
@Override
public String getRequestParameter(String name) {
throw new UnsupportedOperationException();
}
@Override
public String[] getRequestParameterValues(String name) {
throw new UnsupportedOperationException();
}
@Override
public URLBuilder<?> getURLBuilder() {
throw new UnsupportedOperationException();
}
@Override
public boolean useAjax() {
throw new UnsupportedOperationException();
}
@Override
public UserPortal getUserPortal() {
return userPortal;
}
};
//
this.userPortal = userPortal;
this.requestContext = requestContext;
}
@Override
protected void tearDown() throws Exception {
end();
}
public void testCreate() throws Exception {
List<UserNavigation> navs = userPortal.getNavigations();
assertEquals(2, navs.size());
RequestContext.setCurrentInstance(requestContext);
NavigationService ns = (NavigationService) getContainer().getComponentInstanceOfType(NavigationService.class);
ns.saveNavigation(new NavigationContext(SiteKey.group("/platform"), new NavigationState(1)));
navs = userPortal.getNavigations();
assertEquals(3, navs.size());
RequestContext.setCurrentInstance(null);
}
public void testUpdate() throws Exception {
List<UserNavigation> navs = userPortal.getNavigations();
assertEquals(2, navs.size());
NavigationService ns = (NavigationService) getContainer().getComponentInstanceOfType(NavigationService.class);
NavigationContext nav = new NavigationContext(SiteKey.group("/platform"), new NavigationState(1));
ns.saveNavigation(nav);
navs = userPortal.getNavigations();
assertEquals(2, navs.size());
RequestContext.setCurrentInstance(requestContext);
NodeContext root = ns.loadNode(NodeModel.SELF_MODEL, nav, Scope.ALL, null);
root.add(null, "foo");
ns.saveNode(root, null);
navs = userPortal.getNavigations();
assertEquals(3, navs.size());
RequestContext.setCurrentInstance(null);
}
public void testDestroy() throws Exception {
NavigationService ns = (NavigationService) getContainer().getComponentInstanceOfType(NavigationService.class);
NavigationContext nav = new NavigationContext(SiteKey.group("/platform"), new NavigationState(1));
ns.saveNavigation(nav);
List<UserNavigation> navs = userPortal.getNavigations();
assertEquals(3, navs.size());
RequestContext.setCurrentInstance(requestContext);
ns.destroyNavigation(nav);
navs = userPortal.getNavigations();
assertEquals(2, navs.size());
RequestContext.setCurrentInstance(null);
}
}