blob: 002fbcc70c6fbd4fa4076df36f8dfc9be8de4816 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004 - 2006 University Of British Columbia 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:
* University Of British Columbia - initial API and implementation
*******************************************************************************/
package org.eclipse.mylar.bugzilla.tests;
import java.util.Date;
import junit.framework.TestCase;
import org.eclipse.mylar.internal.bugzilla.core.BugzillaQueryHit;
import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryQuery;
import org.eclipse.mylar.internal.bugzilla.core.BugzillaTask;
import org.eclipse.mylar.internal.tasks.ui.TaskListNotificationIncoming;
import org.eclipse.mylar.internal.tasks.ui.TaskListNotificationManager;
import org.eclipse.mylar.internal.tasks.ui.TaskListNotificationQueryIncoming;
import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
import org.eclipse.mylar.tasks.core.ITask;
import org.eclipse.mylar.tasks.core.Task;
import org.eclipse.mylar.tasks.core.TaskRepository;
import org.eclipse.mylar.tasks.core.AbstractRepositoryTask.RepositoryTaskSyncState;
import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
/**
* @author Rob Elves
*/
public class TaskListNotificationManagerTest extends TestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public void testTaskListNotificationReminder() throws InterruptedException {
Date now = new Date();
ITask task0 = new Task("t0", "t0 - test 0", true);
ITask task1 = new Task("t1", "t1 - test 1", true);
ITask task2 = new Task("t2", "t2 - test 2", true);
task0.setScheduledForDate(new Date(now.getTime() - 2000));
task1.setScheduledForDate(new Date(now.getTime() - 2000));
task2.setScheduledForDate(new Date(now.getTime() - 2000));
TasksUiPlugin.getTaskListManager().getTaskList().addTask(task0);
TasksUiPlugin.getTaskListManager().getTaskList().addTask(task1);
TasksUiPlugin.getTaskListManager().getTaskList().addTask(task2);
TaskListNotificationManager notificationManager = TasksUiPlugin.getDefault()
.getTaskListNotificationManager();
notificationManager.collectNotifications();
task0 = TasksUiPlugin.getTaskListManager().getTaskList().getTask("t0");
assertNotNull(task0);
assertTrue(task0.hasBeenReminded());
task1 = TasksUiPlugin.getTaskListManager().getTaskList().getTask("t1");
assertNotNull(task1);
assertTrue(task1.hasBeenReminded());
task2 = TasksUiPlugin.getTaskListManager().getTaskList().getTask("t2");
assertNotNull(task2);
assertTrue(task2.hasBeenReminded());
}
public void testTaskListNotificationIncoming() {
TaskRepository repository = new TaskRepository("bugzilla", "https://bugs.eclipse.org/bugs");
TasksUiPlugin.getRepositoryManager().addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
AbstractRepositoryTask task = new BugzillaTask("https://bugs.eclipse.org/bugs", "142891", "label", true);
assertTrue(task.getSyncState() == RepositoryTaskSyncState.INCOMING);
assertTrue(task.isNotified());
task.setNotified(false);
TasksUiPlugin.getTaskListManager().getTaskList().addTask(task);
TaskListNotificationManager notificationManager = TasksUiPlugin.getDefault()
.getTaskListNotificationManager();
notificationManager.collectNotifications();
assertTrue(notificationManager.getNotifications().contains(new TaskListNotificationIncoming(task)));
task = (AbstractRepositoryTask) TasksUiPlugin.getTaskListManager().getTaskList().getTask(
"https://bugs.eclipse.org/bugs-142891");
assertNotNull(task);
assertTrue(task.isNotified());
}
public void testTaskListNotificationQueryIncoming() {
BugzillaQueryHit hit = new BugzillaQueryHit(null, "summary", "priority", "https://bugs.eclipse.org/bugs", "1",
null, "status");
assertFalse(hit.isNotified());
BugzillaRepositoryQuery query = new BugzillaRepositoryQuery("https://bugs.eclipse.org/bugs", "queryUrl",
"summary", TasksUiPlugin.getTaskListManager().getTaskList());
query.addHit(hit);
TasksUiPlugin.getTaskListManager().getTaskList().addQuery(query);
TaskListNotificationManager notificationManager = TasksUiPlugin.getDefault()
.getTaskListNotificationManager();
notificationManager.collectNotifications();
assertTrue(notificationManager.getNotifications().contains(new TaskListNotificationQueryIncoming(hit)));
assertTrue(hit.isNotified());
}
public void testTaskListNotificationQueryIncomingRepeats() {
TasksUiPlugin.getTaskListManager().resetTaskList();
BugzillaQueryHit hit = new BugzillaQueryHit(null, "summary", "priority", "https://bugs.eclipse.org/bugs", "1",
null, "status");
String hitHandle = hit.getHandleIdentifier();
assertFalse(hit.isNotified());
BugzillaRepositoryQuery query = new BugzillaRepositoryQuery("https://bugs.eclipse.org/bugs", "queryUrl",
"summary", TasksUiPlugin.getTaskListManager().getTaskList());
query.addHit(hit);
TasksUiPlugin.getTaskListManager().getTaskList().addQuery(query);
TaskListNotificationManager notificationManager = TasksUiPlugin.getDefault()
.getTaskListNotificationManager();
notificationManager.collectNotifications();
assertTrue(notificationManager.getNotifications().contains(new TaskListNotificationQueryIncoming(hit)));
assertTrue(hit.isNotified());
TasksUiPlugin.getTaskListManager().saveTaskList();
TasksUiPlugin.getTaskListManager().resetTaskList();
assertEquals(0, TasksUiPlugin.getTaskListManager().getTaskList().getQueries().size());
assertTrue(TasksUiPlugin.getTaskListManager().readExistingOrCreateNewList());
assertEquals(1, TasksUiPlugin.getTaskListManager().getTaskList().getQueries().size());
BugzillaQueryHit hitLoaded = (BugzillaQueryHit)TasksUiPlugin.getTaskListManager().getTaskList().getQueryHit(hitHandle);
assertNotNull(hitLoaded);
assertTrue(hitLoaded.isNotified());
}
}