/********************************************************************* * Copyright (c) 2010, 2015 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); } }