blob: 0719112425c24b6917c1e28f3d6cac81a72145d4 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2008 Tasktop Technologies and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.tasks.tests;
import java.lang.reflect.Field;
import java.util.Date;
import junit.framework.TestCase;
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
import org.eclipse.mylyn.internal.tasks.core.TaskList;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal;
import org.eclipse.mylyn.tasks.core.ITask.PriorityLevel;
import org.eclipse.mylyn.tasks.ui.TasksUiUtil;
import org.eclipse.mylyn.tasks.ui.editors.TaskEditor;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.browser.WebBrowserEditor;
import org.eclipse.ui.internal.browser.WebBrowserEditorInput;
/**
* @author Shawn Minto
*/
public class TasksUiUtilTest extends TestCase {
private TaskCategory cat1;
private AbstractTask cat1task1;
private AbstractTask cat1task2;
private IWorkbenchPage activePage;
private TaskList taskList;
@Override
public void setUp() throws Exception {
taskList = TasksUiPlugin.getTaskList();
TaskTestUtil.resetTaskListAndRepositories();
cat1 = new TaskCategory("First Category");
taskList.addCategory(cat1);
cat1task1 = TasksUiInternal.createNewLocalTask("task 1");
cat1task1.setPriority(PriorityLevel.P1.toString());
cat1task1.setCompletionDate(new Date());
taskList.addTask(cat1task1, cat1);
cat1task2 = TasksUiInternal.createNewLocalTask("task 2");
cat1task2.setPriority(PriorityLevel.P2.toString());
taskList.addTask(cat1task2, cat1);
assertEquals(cat1.getChildren().size(), 2);
activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
activePage.closeAllEditors(false);
assertEquals(0, activePage.getEditorReferences().length);
}
@Override
public void tearDown() throws Exception {
TaskTestUtil.resetTaskListAndRepositories();
activePage.closeAllEditors(false);
}
public void testOpenTaskFromTask() {
TasksUiUtil.openTask(cat1task1);
assertEquals(1, activePage.getEditorReferences().length);
IEditorPart editor = activePage.getEditorReferences()[0].getEditor(true);
assertNotNull(editor);
assertEquals(TaskEditor.class, editor);
TasksUiUtil.openTask(cat1task2);
assertEquals(2, activePage.getEditorReferences().length);
assertTrue(editor instanceof TaskEditor);
assertTrue(activePage.getEditorReferences()[1].getEditor(true) instanceof TaskEditor);
}
public void testOpenTaskFromString() {
TasksUiUtil.openTask((String) null);
assertEquals(1, activePage.getEditorReferences().length);
assertTrue(activePage.getEditorReferences()[0].getEditor(true) instanceof WebBrowserEditor);
}
public void testOpenUrl() {
TasksUiUtil.openUrl(null);
assertEquals(1, activePage.getEditorReferences().length);
IEditorPart editor = activePage.getEditorReferences()[0].getEditor(true);
assertTrue(editor instanceof WebBrowserEditor);
assertTrue(editor.getEditorInput() instanceof WebBrowserEditorInput);
assertEquals(null, ((WebBrowserEditorInput) editor.getEditorInput()).getURL());
TasksUiUtil.openUrl("http://eclipse.org/mylyn");
assertEquals(2, activePage.getEditorReferences().length);
editor = activePage.getEditorReferences()[0].getEditor(true);
assertTrue(editor instanceof WebBrowserEditor);
assertEquals(null, ((WebBrowserEditorInput) editor.getEditorInput()).getURL());
IEditorPart editor2 = activePage.getEditorReferences()[1].getEditor(true);
assertTrue(editor2 instanceof WebBrowserEditor);
assertNotNull(((WebBrowserEditorInput) editor2.getEditorInput()).getURL());
assertEquals("http://eclipse.org/mylyn", ((WebBrowserEditorInput) editor2.getEditorInput()).getURL().toString());
}
public void testFlagNoRichEditor() throws SecurityException, NoSuchFieldException, IllegalArgumentException,
IllegalAccessException {
TasksUiUtil.openUrl(null);
assertEquals(1, activePage.getEditorReferences().length);
IEditorPart editor = activePage.getEditorReferences()[0].getEditor(true);
assertTrue(editor instanceof WebBrowserEditor);
assertTrue(editor.getEditorInput() instanceof WebBrowserEditorInput);
assertEquals(null, ((WebBrowserEditorInput) editor.getEditorInput()).getURL());
WebBrowserEditorInput input = ((WebBrowserEditorInput) editor.getEditorInput());
Field f = input.getClass().getDeclaredField("style");
f.setAccessible(true);
int style = (Integer) f.get(input);
assertFalse((style & TasksUiUtil.FLAG_NO_RICH_EDITOR) == 0);
TasksUiUtil.openUrl("http://eclipse.org/mylyn");
assertEquals(2, activePage.getEditorReferences().length);
editor = activePage.getEditorReferences()[0].getEditor(true);
assertTrue(editor instanceof WebBrowserEditor);
assertEquals(null, ((WebBrowserEditorInput) editor.getEditorInput()).getURL());
input = ((WebBrowserEditorInput) editor.getEditorInput());
f = input.getClass().getDeclaredField("style");
f.setAccessible(true);
style = (Integer) f.get(input);
assertFalse((style & TasksUiUtil.FLAG_NO_RICH_EDITOR) == 0);
IEditorPart editor2 = activePage.getEditorReferences()[1].getEditor(true);
assertTrue(editor2 instanceof WebBrowserEditor);
assertNotNull(((WebBrowserEditorInput) editor2.getEditorInput()).getURL());
assertEquals("http://eclipse.org/mylyn", ((WebBrowserEditorInput) editor2.getEditorInput()).getURL().toString());
input = ((WebBrowserEditorInput) editor.getEditorInput());
f = input.getClass().getDeclaredField("style");
f.setAccessible(true);
style = (Integer) f.get(input);
assertFalse((style & TasksUiUtil.FLAG_NO_RICH_EDITOR) == 0);
// open task should not set FLAG_NO_RICH_EDITOR
TasksUiUtil.openTask("http://eclipse.org/mylyn/test");
assertEquals(3, activePage.getEditorReferences().length);
editor = activePage.getEditorReferences()[2].getEditor(true);
assertTrue(editor instanceof WebBrowserEditor);
assertEquals("http://eclipse.org/mylyn/test", ((WebBrowserEditorInput) editor.getEditorInput()).getURL()
.toString());
input = ((WebBrowserEditorInput) editor.getEditorInput());
f = input.getClass().getDeclaredField("style");
f.setAccessible(true);
style = (Integer) f.get(input);
assertTrue((style & TasksUiUtil.FLAG_NO_RICH_EDITOR) == 0);
}
}