- Synchronize the task editor when opening a review
- Add some files for JUINT testing
Change-Id: I948473f74b03f28c0d912123f533c87273e510e1
Signed-off-by: jbouthillie <lmcbout@gmail.com>
diff --git a/org.eclipse.mylyn.reviews.r4e-gerrit.ui.test/src/org/eclipse/mylyn/reviews/r4e_gerrit/ui/test/GerritCorePluginStub.java b/org.eclipse.mylyn.reviews.r4e-gerrit.ui.test/src/org/eclipse/mylyn/reviews/r4e_gerrit/ui/test/GerritCorePluginStub.java
new file mode 100644
index 0000000..0780e19
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e-gerrit.ui.test/src/org/eclipse/mylyn/reviews/r4e_gerrit/ui/test/GerritCorePluginStub.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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.reviews.r4e_gerrit.ui.test;
+
+import org.eclipse.mylyn.internal.gerrit.core.GerritConnector;
+import org.eclipse.mylyn.internal.gerrit.core.GerritCorePlugin;
+
+public class GerritCorePluginStub extends GerritCorePlugin {
+
+ private static GerritCorePlugin plugin;
+
+ public static GerritCorePlugin getDefault() {
+ return plugin;
+ }
+
+ @Override
+ public GerritConnector getConnector() {
+ return new GerritConnector();
+ }
+
+}
diff --git a/org.eclipse.mylyn.reviews.r4e-gerrit.ui.test/src/org/eclipse/mylyn/reviews/r4e_gerrit/ui/test/R4EGerritTableViewTest.java b/org.eclipse.mylyn.reviews.r4e-gerrit.ui.test/src/org/eclipse/mylyn/reviews/r4e_gerrit/ui/test/R4EGerritTableViewTest.java
index eb5bd6d..ea8db22 100644
--- a/org.eclipse.mylyn.reviews.r4e-gerrit.ui.test/src/org/eclipse/mylyn/reviews/r4e_gerrit/ui/test/R4EGerritTableViewTest.java
+++ b/org.eclipse.mylyn.reviews.r4e-gerrit.ui.test/src/org/eclipse/mylyn/reviews/r4e_gerrit/ui/test/R4EGerritTableViewTest.java
@@ -4,6 +4,7 @@
import java.util.Iterator;
import java.util.Map;
+import org.eclipse.mylyn.reviews.r4e_gerrit.trace.Tracer;
import org.eclipse.mylyn.reviews.r4e_gerrit.ui.R4EGerritUi;
import org.eclipse.mylyn.reviews.r4e_gerrit.ui.internal.model.ReviewTableData;
import org.eclipse.mylyn.reviews.r4e_gerrit.ui.internal.utils.R4EGerritServerUtility;
@@ -13,6 +14,7 @@
import org.eclipse.mylyn.internal.gerrit.core.GerritConnector;
import org.eclipse.mylyn.internal.gerrit.core.GerritCorePlugin;
import org.eclipse.mylyn.internal.gerrit.core.GerritQuery;
+
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -24,24 +26,22 @@
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.*;
import org.powermock.modules.junit4.PowerMockRunner;
-//@RunWith(MockitoJUnitRunner.class)
@RunWith(PowerMockRunner.class)
-//
-@PrepareForTest(R4EGerritServerUtility.class)
+@PrepareForTest({R4EGerritServerUtility.class, GerritCorePlugin.class, R4EGerritUi.class})
public class R4EGerritTableViewTest {
-
private R4EGerritTableView r4eGerritTableView;
@Mock
private R4EGerritServerUtility fServerUtil;
-
+ R4EGerritUi R4EGUi;
+ public Tracer Ftracer;
@Test
public void setUp() throws Exception {
@@ -52,38 +52,61 @@
public void tearDown() throws Exception {
}
-// @Test
+ @Test
+ // Use case testing when no previously Gerrit server exists (getLastSavedGerritServer()==null)
public void testProcessCommandsNoSavedServer() {
- r4eGerritTableView = new R4EGerritTableView();
+ R4EGUi = new R4EGerritUi();
+ R4EGUi.Ftracer = new Tracer();
+ PowerMockito.mockStatic(R4EGerritUi.class);
+ Mockito.when(R4EGerritUi.getDefault()).thenReturn(new R4EGerritUi());
+ PowerMockito.mockStatic(R4EGerritServerUtility.class);
+ GerritCorePlugin gcp = new GerritCorePluginStub();
+
+ PowerMockito.mockStatic(GerritCorePlugin.class);
+
+ Mockito.when(GerritCorePlugin.getDefault()).thenReturn(gcp);
GerritConnector fConnector = mock(GerritConnector.class);
- ReviewTableData fReviewTable = mock(ReviewTableData.class);
+
+ r4eGerritTableView = new R4EGerritTableView();
R4EGerritServerUtility fServerUtil = mock(R4EGerritServerUtility.class);
- r4eGerritTableView.setConnector(fConnector);
- r4eGerritTableView.setReviewTableData(fReviewTable);
+
r4eGerritTableView.setGerritServerUtility(fServerUtil);
String ret = null;
when(fServerUtil.getLastSavedGerritServer()).thenReturn(ret);
+ Map<TaskRepository, String> fMapRepoServer = new HashMap<TaskRepository, String>();
+
+ fMapRepoServer.put( new TaskRepository(GerritConnector.CONNECTOR_KIND, "http://repository"), " ");
+ Mockito.when(R4EGerritServerUtility.getInstance()).thenReturn(fServerUtil);
+ Mockito.when(R4EGerritServerUtility.getInstance().getGerritMapping()).thenReturn(fMapRepoServer);
+ Mockito.when(fServerUtil.getGerritMapping()).thenReturn(fMapRepoServer);
+
// Last saved is null, a repository must be defined.
r4eGerritTableView.processCommands(GerritQuery.CUSTOM);
- assertEquals(r4eGerritTableView.getTaskRepository(),null);
+ assertNotNull(r4eGerritTableView.getTaskRepository());
-
-
}
-// @Test
+ @Test
+ // Use case testing when no previously Gerrit server exists (fServerUtil.getTaskRepo(lastSaved)==null)
public void testProcessCommandsNoGerritRepo() {
+ R4EGUi = new R4EGerritUi();
+ R4EGUi.Ftracer = new Tracer();
+ PowerMockito.mockStatic(R4EGerritUi.class);
+ Mockito.when(R4EGerritUi.getDefault()).thenReturn(new R4EGerritUi());
+
PowerMockito.mockStatic(R4EGerritServerUtility.class);
+ GerritCorePlugin gcp = new GerritCorePluginStub();
+
PowerMockito.mockStatic(GerritCorePlugin.class);
- Mockito.when(GerritCorePlugin.getDefault().getConnector()).thenReturn(null);
+ Mockito.when(GerritCorePlugin.getDefault()).thenReturn(gcp);
+ GerritConnector fConnector = mock(GerritConnector.class);
r4eGerritTableView = new R4EGerritTableView();
- GerritConnector fConnector = mock(GerritConnector.class);
ReviewTableData fReviewTable = mock(ReviewTableData.class);
R4EGerritServerUtility fServerUtil = mock(R4EGerritServerUtility.class);
r4eGerritTableView.setConnector(fConnector);
@@ -97,29 +120,45 @@
when(fServerUtil.getLastSavedGerritServer()).thenReturn("lastSavedGerritServer");
- when(fServerUtil.getTaskRepo(anyString())).thenReturn( new TaskRepository(GerritConnector.CONNECTOR_KIND, "http://repository") );
+ when(fServerUtil.getTaskRepo(anyString())).thenReturn( null );
// no server defined
Map<TaskRepository, String> fMapRepoServer = new HashMap<TaskRepository, String>();
+
+ fMapRepoServer.put( new TaskRepository(GerritConnector.CONNECTOR_KIND, "http://repository"), " ");
+ Mockito.when(R4EGerritServerUtility.getInstance()).thenReturn(fServerUtil);
Mockito.when(R4EGerritServerUtility.getInstance().getGerritMapping()).thenReturn(fMapRepoServer);
+ Mockito.when(fServerUtil.getGerritMapping()).thenReturn(fMapRepoServer);
r4eGerritTableView.processCommands(GerritQuery.CUSTOM);
-
- // check what now ?
+
+ Iterator it = fMapRepoServer.entrySet().iterator();
+ while (it.hasNext()) {
+ assertEquals(r4eGerritTableView.getTaskRepository(),((Map.Entry) it.next()).getKey());
+ }
+
}
-// @Test
+ @Test
+ // Use case testing when one previously Gerrit server exists
public void testProcessCommandsOneGerritRepo() {
+ R4EGUi = new R4EGerritUi();
+ R4EGUi.Ftracer = new Tracer();
+ PowerMockito.mockStatic(R4EGerritUi.class);
+ Mockito.when(R4EGerritUi.getDefault()).thenReturn(new R4EGerritUi());
PowerMockito.mockStatic(R4EGerritServerUtility.class);
- String msg = "testProcessCommands2";
- String reason = "testProcessCommands2.";
- R4EGerritUi.Ftracer.traceInfo(msg );
- UIUtils.showErrorDialog(msg, reason);
+
+ GerritCorePlugin gcp = new GerritCorePluginStub();
+
+ PowerMockito.mockStatic(GerritCorePlugin.class);
+
+ Mockito.when(GerritCorePlugin.getDefault()).thenReturn(gcp);
+ GerritConnector fConnector = mock(GerritConnector.class);
r4eGerritTableView = new R4EGerritTableView();
- GerritConnector fConnector = mock(GerritConnector.class);
+// GerritConnector fConnector = mock(GerritConnector.class);
ReviewTableData fReviewTable = mock(ReviewTableData.class);
R4EGerritServerUtility fServerUtil = mock(R4EGerritServerUtility.class);
r4eGerritTableView.setConnector(fConnector);
@@ -137,7 +176,6 @@
// one server defined
Map<TaskRepository, String> fMapRepoServer = new HashMap<TaskRepository, String>();
fMapRepoServer.put( new TaskRepository(GerritConnector.CONNECTOR_KIND, "http://repository"), " ");
- Mockito.when(R4EGerritServerUtility.getInstance().getGerritMapping()).thenReturn(fMapRepoServer);
r4eGerritTableView.processCommands(GerritQuery.CUSTOM);
diff --git a/org.eclipse.mylyn.reviews.r4e-gerrit.ui/META-INF/MANIFEST.MF b/org.eclipse.mylyn.reviews.r4e-gerrit.ui/META-INF/MANIFEST.MF
index 5191069..c1a7889 100644
--- a/org.eclipse.mylyn.reviews.r4e-gerrit.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.reviews.r4e-gerrit.ui/META-INF/MANIFEST.MF
@@ -26,4 +26,5 @@
org.eclipse.mylyn.reviews.r4e_gerrit.ui.internal.model,
org.eclipse.mylyn.reviews.r4e_gerrit.ui.internal.utils,
org.eclipse.mylyn.reviews.r4egerrit.ui.views
-Import-Package: org.eclipse.mylyn.internal.gerrit.ui.editor
+Import-Package: org.eclipse.mylyn.internal.gerrit.ui.editor,
+ org.eclipse.mylyn.internal.gerrit.ui.operations
diff --git a/org.eclipse.mylyn.reviews.r4e-gerrit.ui/src/org/eclipse/mylyn/reviews/r4egerrit/ui/views/R4EGerritTableView.java b/org.eclipse.mylyn.reviews.r4e-gerrit.ui/src/org/eclipse/mylyn/reviews/r4egerrit/ui/views/R4EGerritTableView.java
index 2259df0..77e24bc 100644
--- a/org.eclipse.mylyn.reviews.r4e-gerrit.ui/src/org/eclipse/mylyn/reviews/r4egerrit/ui/views/R4EGerritTableView.java
+++ b/org.eclipse.mylyn.reviews.r4e-gerrit.ui/src/org/eclipse/mylyn/reviews/r4egerrit/ui/views/R4EGerritTableView.java
@@ -38,19 +38,24 @@
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.mylyn.commons.workbench.DelayedRefreshJob;
import org.eclipse.mylyn.internal.gerrit.core.GerritConnector;
import org.eclipse.mylyn.internal.gerrit.core.GerritCorePlugin;
+import org.eclipse.mylyn.internal.gerrit.core.GerritOperationFactory;
import org.eclipse.mylyn.internal.gerrit.core.GerritQuery;
import org.eclipse.mylyn.internal.gerrit.core.client.GerritClient;
import org.eclipse.mylyn.internal.gerrit.core.client.GerritException;
+import org.eclipse.mylyn.internal.gerrit.core.operations.GerritOperation;
+import org.eclipse.mylyn.internal.gerrit.ui.operations.GerritOperationDialog;
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
import org.eclipse.mylyn.internal.tasks.core.ITaskListChangeListener;
import org.eclipse.mylyn.internal.tasks.core.RepositoryQuery;
import org.eclipse.mylyn.internal.tasks.core.TaskContainerDelta;
import org.eclipse.mylyn.internal.tasks.core.TaskTask;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
+import org.eclipse.mylyn.internal.tasks.ui.actions.SynchronizeEditorAction;
import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal;
import org.eclipse.mylyn.reviews.r4e_gerrit.R4EGerritPlugin;
import org.eclipse.mylyn.reviews.r4e_gerrit.core.R4EGerritTask;
@@ -65,11 +70,13 @@
import org.eclipse.mylyn.reviews.r4e_gerrit.ui.internal.utils.UIUtils;
import org.eclipse.mylyn.tasks.core.IRepositoryElement;
import org.eclipse.mylyn.tasks.core.IRepositoryModel;
+import org.eclipse.mylyn.tasks.core.ITask;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.core.data.TaskData;
import org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi;
import org.eclipse.mylyn.tasks.ui.TasksUi;
import org.eclipse.mylyn.tasks.ui.TasksUiUtil;
+import org.eclipse.mylyn.tasks.ui.editors.TaskEditor;
import org.eclipse.mylyn.tasks.ui.editors.TaskEditorInput;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
@@ -86,6 +93,7 @@
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchActionConstants;
@@ -150,7 +158,7 @@
private GerritConnector fConnector = GerritCorePlugin.getDefault().getConnector();;
- private TaskRepository fTaskRepository;
+ private TaskRepository fTaskRepository = null;
private RepositoryQuery fCurrentQuery = null;
@@ -453,7 +461,25 @@
editorInput = new TaskEditorInput(fTaskRepository, task);
}
String editorId = connectorUi.getTaskEditorId(task);
- TasksUiUtil.openEditor(editorInput, editorId, null);
+ System.out.println("JBJB before editorinout: " + editorInput.getName() + "\n\t editor id: " + editorId);
+ IEditorPart editorPart = TasksUiUtil.openEditor(editorInput, editorId, null);
+ if (editorPart instanceof TaskEditor) {
+ System.out.println("JBJB editorPart: " + editorPart + " Try to refreshed pages");
+ TaskEditor taskEditor = (TaskEditor) editorPart;
+ //Allow to open a Task even if not found locally yet
+ SynchronizeEditorAction synchAction = new SynchronizeEditorAction();
+ synchAction.selectionChanged(new StructuredSelection(taskEditor));
+ synchAction.run();
+
+//JBJB Seems not needed, we have not received the synch yet anyway, but we already have the LABELS FLAGS
+// if (task instanceof R4EGerritTask) {
+// //Refresh the table column with the appropriate data, so the "CR" and "V" column gets updated
+// fReviewTable.updateReviewItem ((R4EGerritTask) task);
+// refresh() ;
+// }
+
+ }
+ System.out.println("JBJB editorinout: " + editorInput.toString() + "\n\t editor id: " + editorId);
}
};
}
@@ -810,13 +836,14 @@
// are handled by ITaskListChangeListener.containersChanged()
GerritConnector connector = GerritCorePlugin.getDefault().getConnector();
Job job = null;
- try {
- job = TasksUiInternal.synchronizeQuery(connector, query, null, true);
- } catch (Exception e) {
- if (job != null) {
- job.cancel();
- }
- }
+ //JB test temp, remove the long query
+// try {
+// job = TasksUiInternal.synchronizeQuery(connector, query, null, true);
+// } catch (Exception e) {
+// if (job != null) {
+// job.cancel();
+// }
+// }
}
private R4EGerritTask[] getReviewList(TaskRepository repository, RepositoryQuery aQuery) throws R4EQueryException {
diff --git a/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/core/R4EGerritTask.java b/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/core/R4EGerritTask.java
index 7ee9b97..79b9275 100644
--- a/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/core/R4EGerritTask.java
+++ b/org.eclipse.mylyn.reviews.r4e-gerrit/src/org/eclipse/mylyn/reviews/r4e_gerrit/core/R4EGerritTask.java
@@ -155,7 +155,7 @@
private String getValue(TaskAttribute taskAttribute) {
if (taskAttribute != null) {
List<String> values = taskAttribute.getValues();
- if (values.size() > 0) {
+ if (values != null && values.size() > 0) {
return values.get(0);
}
}