blob: 1c617b30bf18033228b4ab69b2623f99a0a2bbb0 [file] [log] [blame]
/*********************************************************************
* Copyright (c) 2010 Sony Ericsson/ST Ericsson 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:
* Sony Ericsson/ST Ericsson - initial API and implementation
* Sascha Scholz (SAP) - improvements
*********************************************************************/
package org.eclipse.mylyn.internal.gerrit.core;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import org.eclipse.mylyn.internal.gerrit.core.client.GerritClient;
import org.eclipse.mylyn.internal.gerrit.core.client.GerritConfiguration;
import org.eclipse.mylyn.internal.gerrit.core.client.compat.GerritConfigX;
import org.eclipse.mylyn.tasks.core.ITask;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper;
import org.eclipse.mylyn.tasks.core.data.TaskData;
import org.junit.Test;
import com.google.gerrit.reviewdb.Project;
import com.google.gerrit.reviewdb.Project.NameKey;
/**
* @author Mikael Kober
*/
public class GerritConnectorTest {
private final GerritConnector connector = new GerritConnector();
@Test
public void testCanCreateNewTask() {
assertFalse(connector.canCreateNewTask(null));
}
@Test
public void testGetConnectorKind() {
assertEquals(GerritConnector.CONNECTOR_KIND, connector.getConnectorKind());
}
@Test
public void testGetRepositoryUrlFromTaskUrlInvalid() {
assertNull(connector.getRepositoryUrlFromTaskUrl(null));
assertNull(connector.getRepositoryUrlFromTaskUrl("")); //$NON-NLS-1$
assertNull(connector.getRepositoryUrlFromTaskUrl("invalid repository url")); //$NON-NLS-1$
assertNull(connector.getRepositoryUrlFromTaskUrl("http://invalid.repository.url")); //$NON-NLS-1$
}
@Test
public void testGetRepositoryUrlFromTaskUrlOld() {
assertEquals(
"http://review.source.android.com", connector.getRepositoryUrlFromTaskUrl("http://review.source.android.com/#change,13492")); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void testGetRepositoryUrlFromTaskUrlNew() {
assertEquals(
"http://review.source.android.com", connector.getRepositoryUrlFromTaskUrl("http://review.source.android.com/#/c/13492")); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals(
"http://review.source.android.com", connector.getRepositoryUrlFromTaskUrl("http://review.source.android.com/#/c/13492/")); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals(
"http://review.source.android.com", connector.getRepositoryUrlFromTaskUrl("http://review.source.android.com/#/c/13492/1")); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals(
"http://review.source.android.com", connector.getRepositoryUrlFromTaskUrl("http://review.source.android.com/#/c/13492/1/2")); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void testGetTaskIdFromTaskUrlOld() {
assertEquals("13492", connector.getTaskIdFromTaskUrl("http://review.source.android.com/#change,13492")); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void testGetTaskIdFromTaskUrlInvalid() {
assertNull(connector.getTaskIdFromTaskUrl(null));
assertNull(connector.getTaskIdFromTaskUrl("")); //$NON-NLS-1$
assertNull(connector.getTaskIdFromTaskUrl("invalid repository url")); //$NON-NLS-1$
assertNull(connector.getTaskIdFromTaskUrl("http://invalid.repository.url")); //$NON-NLS-1$
}
public void testGetTaskIdFromTaskUrlNew() {
assertEquals("13492", connector.getTaskIdFromTaskUrl("http://review.source.android.com/#/c/13492")); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("13492", connector.getTaskIdFromTaskUrl("http://review.source.android.com/#/c/13492/")); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("13492", connector.getTaskIdFromTaskUrl("http://review.source.android.com/#/c/13492/1")); //$NON-NLS-1$ //$NON-NLS-2$
assertEquals("13492", connector.getTaskIdFromTaskUrl("http://review.source.android.com/#/c/13492/1/2")); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void testGetTaskUrl() {
assertEquals("http://review.source.android.com/#/c/13492/", //$NON-NLS-1$
connector.getTaskUrl("http://review.source.android.com", "13492")); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void testGetTaskUrlTrailingSlash() {
assertEquals("http://review.mylyn.org/#/c/4698/", //$NON-NLS-1$
connector.getTaskUrl("http://review.mylyn.org/", "4698")); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void createReviewClient() {
TaskRepository repository = new TaskRepository(GerritConnector.CONNECTOR_KIND, "http://repository"); //$NON-NLS-1$
GerritClient client = connector.createReviewClient(repository, true);
assertNull(client.getConfiguration());
assertNull(client.getGerritConfig());
}
@Test
public void createReviewClientWithConfiguration() {
Project project = new Project(new NameKey("name")); //$NON-NLS-1$
TaskRepository repository = new TaskRepository(GerritConnector.CONNECTOR_KIND, "http://repository"); //$NON-NLS-1$
GerritConfiguration configuration = new GerritConfiguration(new GerritConfigX(),
Collections.singletonList(project), null);
connector.saveConfiguration(repository, configuration);
GerritClient client = connector.createReviewClient(repository, true);
List<Project> projects = client.getConfiguration().getProjects();
assertNotNull(projects);
assertEquals(1, projects.size());
assertEquals(project.getNameKey(), projects.get(0).getNameKey());
assertNotNull(client.getGerritConfig());
}
@Test
public void createTransientReviewClient() {
TaskRepository repository = new TaskRepository(GerritConnector.CONNECTOR_KIND, "http://repository"); //$NON-NLS-1$
GerritClient client = connector.createTransientReviewClient(repository);
assertNull(client.getConfiguration());
assertNull(client.getGerritConfig());
}
@Test
public void testHasTaskChangedSameDate() {
assertFalse(hasTaskChanged(123456000, 123456000));
}
@Test
public void testHasTaskChangedSameDateWithMillis() {
assertFalse(hasTaskChanged(123456123, 123456123));
}
@Test
public void testHasTaskChangedMillisMissingFromLocal() {
assertFalse(hasTaskChanged(123456000, 123456123));
}
@Test
public void testHasTaskChangedMillisMissingFromLocalRoundedUp() {
assertFalse(hasTaskChanged(123456000, 123455911));
}
@Test
public void testHasTaskChangedMillisMissingFromLocalDatesDifferByMoreThanOneSecond() {
assertTrue(hasTaskChanged(123456000, 123454123));
assertTrue(hasTaskChanged(123456000, 123457123));
}
@Test
public void testHasTaskChangedMillisMissingFromRepository() {
assertTrue(hasTaskChanged(123456123, 123456000));
}
@Test
public void testHasTaskChangedMillisDiffer() {
assertTrue(hasTaskChanged(123456123, 123456122));
assertTrue(hasTaskChanged(123456123, 123456124));
}
@Test
public void testHasTaskChangedSecondsDiffer() {
assertTrue(hasTaskChanged(123456123, 123455123));
assertTrue(hasTaskChanged(123456123, 123457123));
}
private boolean hasTaskChanged(int localDate, int repositoryDate) {
ITask task = mock(ITask.class);
when(task.getModificationDate()).thenReturn(new Date(localDate));
TaskData taskData = new TaskData(new TaskAttributeMapper(new TaskRepository(GerritConnector.CONNECTOR_KIND,
"http://mock")), GerritConnector.CONNECTOR_KIND, "http://mock", "1");
taskData.getRoot()
.createMappedAttribute(TaskAttribute.DATE_MODIFICATION)
.setValue(String.valueOf(repositoryDate));
return connector.hasTaskChanged(null, task, taskData);
}
}