/*
* Copyright (C) 2003-2014 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.exoplatform.services.cms.clipboard;
import java.util.Set;
import org.exoplatform.services.cms.clipboard.jcr.model.ClipboardCommand;
import org.exoplatform.services.wcm.BaseWCMTestCase;
import org.exoplatform.services.wcm.utils.WCMCoreUtils;
/**
* Created by The eXo Platform SAS
* Author : eXoPlatform
* exo@exoplatform.com
* Jan 28, 2014
*/
public class TestClipboardService extends BaseWCMTestCase {
ClipboardService clipboardService_ = null;
/**
* add some nodes for testing because getClipboardList check the existing of node
* some nodes will not be found if workspace is not defined
*/
public void setUp() throws Exception {
super.setUp();
session.getRootNode().addNode("documents");
session.getRootNode().addNode("music");
session.getRootNode().addNode("favorites");
session.getRootNode().addNode("pictures");
session.save();
clipboardService_ = WCMCoreUtils.getService(ClipboardService.class);
clipboardService_.addClipboardCommand("john",
new ClipboardCommand(ClipboardCommand.CUT, "/documents", "collaboration"), false);
clipboardService_.addClipboardCommand("john",
new ClipboardCommand(ClipboardCommand.CUT, "/music", "collaboration"), false);
clipboardService_.addClipboardCommand("john",
new ClipboardCommand(ClipboardCommand.CUT, "/favorites", "collaboration"), true);
//duplication
clipboardService_.addClipboardCommand("john",
new ClipboardCommand(ClipboardCommand.CUT, "/documents", "collaboration"), false);
clipboardService_.addClipboardCommand("john",
new ClipboardCommand(ClipboardCommand.CUT, "/documents", "collaboration"), true);
clipboardService_.addClipboardCommand("john",
new ClipboardCommand(ClipboardCommand.COPY, "/documents", "dms-system"), false);
clipboardService_.addClipboardCommand("mary",
new ClipboardCommand(ClipboardCommand.CUT, "/documents", "collaboration"), true);
clipboardService_.addClipboardCommand("mary",
new ClipboardCommand(ClipboardCommand.CUT, "/publics", "collaboration"), true);
}
public void tearDown() throws Exception {
clipboardService_.clearClipboardList("john", true);
clipboardService_.clearClipboardList("john", false);
clipboardService_.clearClipboardList("mary", true);
super.tearDown();
}
public void testAddClipboardCommand() throws Exception {
clipboardService_.addClipboardCommand("john",
new ClipboardCommand(ClipboardCommand.CUT, "/pictures", "collaboration"), false);
// expect 3 because workspace "dms-system" doesn't exist in test platform
assertEquals(3, clipboardService_.getClipboardList("john", false).size());
clipboardService_.addClipboardCommand("john",
new ClipboardCommand(ClipboardCommand.CUT, "/public", "collaboration"), true);
// expect 2 because public node is not added
assertEquals(2, clipboardService_.getClipboardList("john", true).size());
// expect 1 because publics node is not added
assertEquals(1, clipboardService_.getClipboardList("mary", true).size());
assertEquals(0, clipboardService_.getClipboardList("james", false).size());
}
public void testGetLastClipboard() throws Exception {
ClipboardCommand command = clipboardService_.getLastClipboard("john");
assertEquals("dms-system", command.getWorkspace());
assertEquals(ClipboardCommand.COPY, command.getType());
command = clipboardService_.getLastClipboard("mary");
assertNull(command);
clipboardService_.addClipboardCommand("mary",
new ClipboardCommand(ClipboardCommand.CUT, "/documents", "calendar"), false);
command = clipboardService_.getLastClipboard("mary");
assertEquals("calendar", command.getWorkspace());
assertEquals(ClipboardCommand.CUT, command.getType());
}
public void testGetClipboardList() {
Set<ClipboardCommand> commands = clipboardService_.getClipboardList("john", false);
assertEquals(2, commands.size());
commands = clipboardService_.getClipboardList("john", true);
assertEquals(2, commands.size());
commands = clipboardService_.getClipboardList("mary", true);
assertEquals(1, commands.size());
commands = clipboardService_.getClipboardList("mary", false);
assertEquals(0, commands.size());
}
public void testClearClipboardList() {
clipboardService_.clearClipboardList("john", false);
assertEquals(0, clipboardService_.getClipboardList("john", false).size());
clipboardService_.clearClipboardList("john", true);
assertEquals(0, clipboardService_.getClipboardList("john", true).size());
clipboardService_.clearClipboardList("mary", true);
assertEquals(0, clipboardService_.getClipboardList("mary", true).size());
}
public void testRemoveClipboardCommand() {
clipboardService_.removeClipboardCommand("john", new ClipboardCommand(ClipboardCommand.CUT, "/documents", "collaboration"));
Set<ClipboardCommand> commands = clipboardService_.getClipboardList("john", false);
assertEquals(1, commands.size());
clipboardService_.removeClipboardCommand("john", new ClipboardCommand(ClipboardCommand.COPY, "/documents", "dms-system"));
commands = clipboardService_.getClipboardList("john", false);
assertEquals(1, commands.size());
ClipboardCommand command = clipboardService_.getLastClipboard("john");
assertEquals("collaboration", command.getWorkspace());
assertEquals(ClipboardCommand.CUT, command.getType());
}
}