/*******************************************************************************
* Copyright (c) 2015 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.internal.gerrit.ui;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.compare.CompareConfiguration;
import org.eclipse.compare.CompareEditorInput;
import org.eclipse.mylyn.internal.reviews.ui.compare.FileItemCompareEditorInput;
import org.eclipse.mylyn.internal.reviews.ui.compare.ReviewItemSetCompareEditorInput;
import org.eclipse.mylyn.reviews.core.model.IFileItem;
import org.eclipse.mylyn.reviews.core.model.IFileVersion;
import org.eclipse.mylyn.reviews.core.model.IReviewItemSet;
import org.eclipse.mylyn.reviews.core.model.IReviewsFactory;
import org.eclipse.mylyn.tasks.core.ITask;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.PartInitException;
import org.junit.Before;
import org.junit.Test;
@SuppressWarnings("restriction")
public class GerritCompareUiTest {
private static final IEditorReference[] EMPTY_IEDITOR_REFERENCE_ARRAY = new IEditorReference[0];
private static final String FILE_ITEM_ID = "Test file item ID";
private static final String REVIEW_ITEM_SET_ID = "Test review item set ID";
private static final String TEST_TASK_ID = "Test task ID";
private static final String COMPARE_EDITOR_TITLE = "Compare Editor Title";
private static final String COMPARE_EDITOR = "org.eclipse.compare.CompareEditor";
private List<IEditorReference> editorReferences;
private FileItemCompareEditorInput fileItemEditorInput;
private ReviewItemSetCompareEditorInput reviewItemSetEditorInput;
private IFileItem item;
private IReviewItemSet items;
@Before
public void setUp() throws PartInitException {
editorReferences = new ArrayList<IEditorReference>();
editorReferences.add(getMockEditor("org.eclipse.other.Editor"));
item = IReviewsFactory.INSTANCE.createFileItem();
item.setId(FILE_ITEM_ID);
item.setBase(getIFileVersion("Base Test Description"));
item.setTarget(getIFileVersion("Target Test Description"));
items = IReviewsFactory.INSTANCE.createReviewItemSet();
items.setName(REVIEW_ITEM_SET_ID);
GerritReviewBehavior behavior = new GerritReviewBehavior(mock(ITask.class));
CompareConfiguration configuration = new CompareConfiguration();
fileItemEditorInput = new FileItemCompareEditorInput(configuration, item, behavior);
reviewItemSetEditorInput = new ReviewItemSetCompareEditorInput(configuration, items, null, behavior);
}
private IFileVersion getIFileVersion(String description) {
IFileVersion fileVersion = IReviewsFactory.INSTANCE.createFileVersion();
fileVersion.setDescription(description);
return fileVersion;
}
@Test
public void testNoOpenCompareEditors() {
CompareEditorInput newInput = GerritCompareUi.getComparisonEditorInput(
editorReferences.toArray(EMPTY_IEDITOR_REFERENCE_ARRAY), fileItemEditorInput,
GerritCompareUi.getFileComparePredicate(item));
assertEquals(newInput, fileItemEditorInput);
newInput = GerritCompareUi.getComparisonEditorInput(editorReferences.toArray(EMPTY_IEDITOR_REFERENCE_ARRAY),
reviewItemSetEditorInput, GerritCompareUi.getReviewItemSetComparePredicate(items, TEST_TASK_ID));
assertEquals(newInput, reviewItemSetEditorInput);
}
@Test
public void testOpenNewFileCompareEditor() throws Exception {
editorReferences.add(getMockFileCompareEditor());
item.setId("New File Item ID");
CompareEditorInput newInput = GerritCompareUi.getComparisonEditorInput(
editorReferences.toArray(EMPTY_IEDITOR_REFERENCE_ARRAY), fileItemEditorInput,
GerritCompareUi.getFileComparePredicate(item));
assertEquals(newInput, fileItemEditorInput);
}
@Test
public void testOpenNewReviewItemSetCompareEditor() throws Exception {
editorReferences.add(getMockReviewItemSetCompareEditor());
items.setName("New Review Item ID");
CompareEditorInput newInput = GerritCompareUi.getComparisonEditorInput(
editorReferences.toArray(EMPTY_IEDITOR_REFERENCE_ARRAY), reviewItemSetEditorInput,
GerritCompareUi.getReviewItemSetComparePredicate(items, TEST_TASK_ID));
assertEquals(newInput, reviewItemSetEditorInput);
items.setName(REVIEW_ITEM_SET_ID);
newInput = GerritCompareUi.getComparisonEditorInput(editorReferences.toArray(EMPTY_IEDITOR_REFERENCE_ARRAY),
reviewItemSetEditorInput, GerritCompareUi.getReviewItemSetComparePredicate(items, "New Test Task Id"));
assertEquals(newInput, reviewItemSetEditorInput);
}
@Test
public void testOpenExistingFileCompareEditor() throws Exception {
editorReferences.add(getMockFileCompareEditor());
CompareEditorInput newInput = GerritCompareUi.getComparisonEditorInput(
editorReferences.toArray(EMPTY_IEDITOR_REFERENCE_ARRAY), fileItemEditorInput,
GerritCompareUi.getFileComparePredicate(item));
assertTrue(newInput != fileItemEditorInput);
assertEquals(COMPARE_EDITOR_TITLE, newInput.getTitle());
}
@Test
public void testOpenExistingReviewItemSetCompareEditor() throws Exception {
editorReferences.add(getMockReviewItemSetCompareEditor());
CompareEditorInput newInput = GerritCompareUi.getComparisonEditorInput(
editorReferences.toArray(EMPTY_IEDITOR_REFERENCE_ARRAY), reviewItemSetEditorInput,
GerritCompareUi.getReviewItemSetComparePredicate(items, TEST_TASK_ID));
assertTrue(newInput != reviewItemSetEditorInput);
assertEquals(COMPARE_EDITOR_TITLE, newInput.getTitle());
}
private IEditorReference getMockEditor(String id) {
IEditorReference ref = mock(IEditorReference.class);
when(ref.getId()).thenReturn(id);
return ref;
}
private IEditorReference getMockFileCompareEditor() throws PartInitException {
FileItemCompareEditorInput input = mock(FileItemCompareEditorInput.class);
when(input.getFileItemId()).thenReturn(FILE_ITEM_ID);
when(input.getTitle()).thenReturn(COMPARE_EDITOR_TITLE);
IEditorReference ref = getMockEditor(COMPARE_EDITOR);
when(ref.getEditorInput()).thenReturn(input);
return ref;
}
private IEditorReference getMockReviewItemSetCompareEditor() throws PartInitException {
ReviewItemSetCompareEditorInput input = mock(ReviewItemSetCompareEditorInput.class);
when(input.getName()).thenReturn(REVIEW_ITEM_SET_ID);
when(input.getTitle()).thenReturn(COMPARE_EDITOR_TITLE);
when(input.getItemTaskId()).thenReturn(TEST_TASK_ID);
IEditorReference ref = getMockEditor(COMPARE_EDITOR);
when(ref.getEditorInput()).thenReturn(input);
return ref;
}
}