/*
* (C) Copyright 2011 Nuxeo SA (http://nuxeo.com/) and contributors.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser General Public License
* (LGPL) version 2.1 which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/lgpl.html
*
* 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.
*
* Contributors:
* Anahide Tchertchian
*/
package org.nuxeo.ecm.platform.ui.web;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.After;
import org.junit.Test;
import static org.junit.Assert.*;
import org.nuxeo.ecm.platform.actions.Action;
import org.nuxeo.ecm.platform.actions.ejb.ActionManager;
import org.nuxeo.ecm.platform.ui.web.api.TabActionsSelection;
import org.nuxeo.ecm.platform.ui.web.api.WebActions;
/**
* @since 5.4.2
*/
public class TestTabActionsSelection {
ActionManager actionManager;
static String DEFAULT_CATEGORY = WebActions.DEFAULT_TABS_CATEGORY;
static String CUSTOM_CATEGORY = "custom_category";
static enum TAB_ACTION {
// standard tab
TAB_VIEW(new String[] { DEFAULT_CATEGORY }),
// custom tab with multiple categories
TAB_CUSTOM_MULTICATS(new String[] { DEFAULT_CATEGORY, CUSTOM_CATEGORY }),
// custom tab
TAB_CUSTOM(new String[] { CUSTOM_CATEGORY }),
// custom sub tab
SUBTAB_CUSTOM(new String[] { "TAB_CUSTOM"
+ WebActions.SUBTAB_CATEGORY_SUFFIX });
String[] categories;
TAB_ACTION(String[] categories) {
this.categories = categories;
}
public String getId() {
return name();
}
public Action getAction() {
return new Action(name(), categories);
}
}
@Before
public void setUp() throws Exception {
List<Action> testActions = new ArrayList<Action>();
for (TAB_ACTION tabAction : TAB_ACTION.values()) {
testActions.add(tabAction.getAction());
}
actionManager = new MockActionManager(testActions);
}
@After
public void tearDown() throws Exception {
actionManager = null;
}
@Test
public void testSetCurrentTabAction() throws Exception {
TabActionsSelection sel = new TabActionsSelection();
sel.setCurrentTabAction(CUSTOM_CATEGORY,
TAB_ACTION.TAB_CUSTOM.getAction());
assertEquals(TAB_ACTION.TAB_CUSTOM.getAction(),
sel.getCurrentTabAction(CUSTOM_CATEGORY));
assertEquals(TAB_ACTION.TAB_CUSTOM.getId(),
sel.getCurrentTabId(CUSTOM_CATEGORY));
assertEquals("custom_category:TAB_CUSTOM", sel.getCurrentTabIds());
// add another one
sel.setCurrentTabAction(DEFAULT_CATEGORY,
TAB_ACTION.TAB_VIEW.getAction());
assertEquals(TAB_ACTION.TAB_VIEW.getAction(),
sel.getCurrentTabAction(DEFAULT_CATEGORY));
assertEquals(TAB_ACTION.TAB_VIEW.getId(),
sel.getCurrentTabId(DEFAULT_CATEGORY));
// check nothing's changed for previous selection
assertEquals(TAB_ACTION.TAB_CUSTOM.getAction(),
sel.getCurrentTabAction(CUSTOM_CATEGORY));
assertEquals(TAB_ACTION.TAB_CUSTOM.getId(),
sel.getCurrentTabId(CUSTOM_CATEGORY));
assertEquals("custom_category:TAB_CUSTOM,:TAB_VIEW",
sel.getCurrentTabIds());
// check reset
sel.resetCurrentTabs(CUSTOM_CATEGORY);
assertNull(sel.getCurrentTabAction(CUSTOM_CATEGORY));
assertNull(sel.getCurrentTabId(CUSTOM_CATEGORY));
assertEquals(TAB_ACTION.TAB_VIEW.getAction(),
sel.getCurrentTabAction(DEFAULT_CATEGORY));
assertEquals(TAB_ACTION.TAB_VIEW.getId(),
sel.getCurrentTabId(DEFAULT_CATEGORY));
assertEquals(":TAB_VIEW", sel.getCurrentTabIds());
}
@Test
public void testSetCurrentTabActionWithSubTab() throws Exception {
TabActionsSelection sel = new TabActionsSelection();
sel.setCurrentTabAction(CUSTOM_CATEGORY,
TAB_ACTION.TAB_CUSTOM.getAction());
assertEquals(TAB_ACTION.TAB_CUSTOM.getAction(),
sel.getCurrentTabAction(CUSTOM_CATEGORY));
assertEquals(TAB_ACTION.TAB_CUSTOM.getId(),
sel.getCurrentTabId(CUSTOM_CATEGORY));
assertEquals("custom_category:TAB_CUSTOM", sel.getCurrentTabIds());
// add a sub tab
sel.setCurrentTabAction(TAB_ACTION.TAB_CUSTOM.getId()
+ WebActions.SUBTAB_CATEGORY_SUFFIX,
TAB_ACTION.SUBTAB_CUSTOM.getAction());
assertEquals(TAB_ACTION.SUBTAB_CUSTOM.getAction(),
sel.getCurrentTabAction(TAB_ACTION.TAB_CUSTOM.getId()
+ WebActions.SUBTAB_CATEGORY_SUFFIX));
assertEquals(TAB_ACTION.SUBTAB_CUSTOM.getId(),
sel.getCurrentTabId(TAB_ACTION.TAB_CUSTOM.getId()
+ WebActions.SUBTAB_CATEGORY_SUFFIX));
assertEquals("custom_category:TAB_CUSTOM:SUBTAB_CUSTOM",
sel.getCurrentTabIds());
// check override
sel.setCurrentTabAction(CUSTOM_CATEGORY,
TAB_ACTION.TAB_CUSTOM_MULTICATS.getAction());
assertEquals(TAB_ACTION.TAB_CUSTOM_MULTICATS.getAction(),
sel.getCurrentTabAction(CUSTOM_CATEGORY));
assertEquals(TAB_ACTION.TAB_CUSTOM_MULTICATS.getId(),
sel.getCurrentTabId(CUSTOM_CATEGORY));
// check subtab is not there anymore
assertNull(sel.getCurrentTabAction(TAB_ACTION.TAB_CUSTOM.getId()
+ WebActions.SUBTAB_CATEGORY_SUFFIX));
assertNull(sel.getCurrentTabId(TAB_ACTION.TAB_CUSTOM.getId()
+ WebActions.SUBTAB_CATEGORY_SUFFIX));
assertEquals("custom_category:TAB_CUSTOM_MULTICATS",
sel.getCurrentTabIds());
}
@Test
public void testResetCurrentTabActionWithSubTab() throws Exception {
TabActionsSelection sel = new TabActionsSelection();
sel.setCurrentTabAction(CUSTOM_CATEGORY,
TAB_ACTION.TAB_CUSTOM.getAction());
sel.setCurrentTabAction(TAB_ACTION.TAB_CUSTOM.getId()
+ WebActions.SUBTAB_CATEGORY_SUFFIX,
TAB_ACTION.SUBTAB_CUSTOM.getAction());
// check reset
sel.resetCurrentTabs(CUSTOM_CATEGORY);
assertNull(sel.getCurrentTabAction(CUSTOM_CATEGORY));
assertNull(sel.getCurrentTabId(CUSTOM_CATEGORY));
assertNull(sel.getCurrentTabAction(TAB_ACTION.TAB_CUSTOM.getId()
+ WebActions.SUBTAB_CATEGORY_SUFFIX));
assertNull(sel.getCurrentTabId(TAB_ACTION.TAB_CUSTOM.getId()
+ WebActions.SUBTAB_CATEGORY_SUFFIX));
assertEquals("", sel.getCurrentTabIds());
}
@Test
public void testSetCurrentTabId() throws Exception {
TabActionsSelection sel = new TabActionsSelection();
sel.setCurrentTabId(actionManager, null, CUSTOM_CATEGORY,
TAB_ACTION.TAB_CUSTOM.getId());
assertEquals(TAB_ACTION.TAB_CUSTOM.getAction(),
sel.getCurrentTabAction(CUSTOM_CATEGORY));
assertEquals(TAB_ACTION.TAB_CUSTOM.getId(),
sel.getCurrentTabId(CUSTOM_CATEGORY));
assertEquals("custom_category:TAB_CUSTOM", sel.getCurrentTabIds());
// add another one
sel.setCurrentTabId(actionManager, null, DEFAULT_CATEGORY,
TAB_ACTION.TAB_VIEW.getId());
assertEquals(TAB_ACTION.TAB_VIEW.getAction(),
sel.getCurrentTabAction(DEFAULT_CATEGORY));
assertEquals(TAB_ACTION.TAB_VIEW.getId(),
sel.getCurrentTabId(DEFAULT_CATEGORY));
// check nothing's changed for previous selection
assertEquals(TAB_ACTION.TAB_CUSTOM.getAction(),
sel.getCurrentTabAction(CUSTOM_CATEGORY));
assertEquals(TAB_ACTION.TAB_CUSTOM.getId(),
sel.getCurrentTabId(CUSTOM_CATEGORY));
assertEquals("custom_category:TAB_CUSTOM,:TAB_VIEW",
sel.getCurrentTabIds());
// check reset
sel.resetCurrentTabs(CUSTOM_CATEGORY);
assertNull(sel.getCurrentTabAction(CUSTOM_CATEGORY));
assertNull(sel.getCurrentTabId(CUSTOM_CATEGORY));
assertEquals(TAB_ACTION.TAB_VIEW.getId(),
sel.getCurrentTabId(DEFAULT_CATEGORY));
assertEquals(TAB_ACTION.TAB_VIEW.getId(),
sel.getCurrentTabId(DEFAULT_CATEGORY));
assertEquals(":TAB_VIEW", sel.getCurrentTabIds());
}
@Test
public void testSetCurrentTabIds() throws Exception {
TabActionsSelection sel = new TabActionsSelection();
sel.setCurrentTabIds(actionManager, null,
"custom_category:TAB_CUSTOM:SUBTAB_CUSTOM,:TAB_VIEW");
assertEquals(TAB_ACTION.TAB_VIEW.getAction(),
sel.getCurrentTabAction(DEFAULT_CATEGORY));
assertEquals(TAB_ACTION.TAB_VIEW.getId(),
sel.getCurrentTabId(DEFAULT_CATEGORY));
assertEquals(TAB_ACTION.TAB_CUSTOM.getAction(),
sel.getCurrentTabAction(CUSTOM_CATEGORY));
assertEquals(TAB_ACTION.TAB_CUSTOM.getId(),
sel.getCurrentTabId(CUSTOM_CATEGORY));
assertEquals(TAB_ACTION.SUBTAB_CUSTOM.getId(),
sel.getCurrentTabId(TAB_ACTION.TAB_CUSTOM.getId()
+ WebActions.SUBTAB_CATEGORY_SUFFIX));
assertEquals("custom_category:TAB_CUSTOM:SUBTAB_CUSTOM,:TAB_VIEW",
sel.getCurrentTabIds());
}
protected TabActionsSelection getTestSelectionToReset() {
TabActionsSelection sel = new TabActionsSelection();
sel.setCurrentTabIds(actionManager, null,
"custom_category:TAB_CUSTOM:SUBTAB_CUSTOM,:TAB_VIEW");
assertEquals(TAB_ACTION.TAB_VIEW.getId(),
sel.getCurrentTabId(DEFAULT_CATEGORY));
assertEquals(TAB_ACTION.TAB_CUSTOM.getId(),
sel.getCurrentTabId(CUSTOM_CATEGORY));
assertEquals(TAB_ACTION.SUBTAB_CUSTOM.getId(),
sel.getCurrentTabId(TAB_ACTION.TAB_CUSTOM.getId()
+ WebActions.SUBTAB_CATEGORY_SUFFIX));
assertEquals("custom_category:TAB_CUSTOM:SUBTAB_CUSTOM,:TAB_VIEW",
sel.getCurrentTabIds());
return sel;
}
@Test
public void testSetCurrentTabIds_resetSubTab() throws Exception {
TabActionsSelection sel = getTestSelectionToReset();
sel.setCurrentTabIds(actionManager, null,
"custom_category:TAB_CUSTOM,:TAB_VIEW");
assertEquals(TAB_ACTION.TAB_VIEW.getId(),
sel.getCurrentTabId(DEFAULT_CATEGORY));
assertEquals(TAB_ACTION.TAB_CUSTOM.getId(),
sel.getCurrentTabId(CUSTOM_CATEGORY));
assertNull(sel.getCurrentTabId(TAB_ACTION.TAB_CUSTOM.getId()
+ WebActions.SUBTAB_CATEGORY_SUFFIX));
assertEquals("custom_category:TAB_CUSTOM,:TAB_VIEW",
sel.getCurrentTabIds());
}
@Test
public void testSetCurrentTabIds_resetDefaultTab() throws Exception {
TabActionsSelection sel = getTestSelectionToReset();
sel.setCurrentTabIds(actionManager, null, ":");
assertNull(sel.getCurrentTabId(DEFAULT_CATEGORY));
assertEquals(TAB_ACTION.TAB_CUSTOM.getId(),
sel.getCurrentTabId(CUSTOM_CATEGORY));
assertEquals(TAB_ACTION.SUBTAB_CUSTOM.getId(),
sel.getCurrentTabId(TAB_ACTION.TAB_CUSTOM.getId()
+ WebActions.SUBTAB_CATEGORY_SUFFIX));
assertEquals("custom_category:TAB_CUSTOM:SUBTAB_CUSTOM",
sel.getCurrentTabIds());
}
@Test
public void testSetCurrentTabIds_resetTabWithSubTab() throws Exception {
TabActionsSelection sel = getTestSelectionToReset();
sel.setCurrentTabIds(actionManager, null, "custom_category:,:TAB_VIEW");
assertEquals(TAB_ACTION.TAB_VIEW.getId(),
sel.getCurrentTabId(DEFAULT_CATEGORY));
assertNull(sel.getCurrentTabId(CUSTOM_CATEGORY));
assertNull(sel.getCurrentTabId(TAB_ACTION.TAB_CUSTOM.getId()
+ WebActions.SUBTAB_CATEGORY_SUFFIX));
assertEquals(":TAB_VIEW", sel.getCurrentTabIds());
}
@Test
public void testSetCurrentTabIds_resetAll() throws Exception {
TabActionsSelection sel = getTestSelectionToReset();
sel.setCurrentTabIds(actionManager, null, "*:");
assertNull(sel.getCurrentTabId(DEFAULT_CATEGORY));
assertNull(sel.getCurrentTabId(CUSTOM_CATEGORY));
assertNull(sel.getCurrentTabId(TAB_ACTION.TAB_CUSTOM.getId()
+ WebActions.SUBTAB_CATEGORY_SUFFIX));
assertEquals("", sel.getCurrentTabIds());
}
@Test
public void testSetCurrentTabIds_resetAllAndSet() throws Exception {
TabActionsSelection sel = getTestSelectionToReset();
sel.setCurrentTabIds(actionManager, null, "*:,:TAB_VIEW");
assertEquals(TAB_ACTION.TAB_VIEW.getId(),
sel.getCurrentTabId(DEFAULT_CATEGORY));
assertNull(sel.getCurrentTabId(CUSTOM_CATEGORY));
assertNull(sel.getCurrentTabId(TAB_ACTION.TAB_CUSTOM.getId()
+ WebActions.SUBTAB_CATEGORY_SUFFIX));
assertEquals(":TAB_VIEW", sel.getCurrentTabIds());
}
}