| /******************************************************************************* |
| * Copyright (c) 2013, 2015 Tasktop Technologies and others. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * https://www.eclipse.org/legal/epl-2.0 |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Tasktop Technologies - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.mylyn.tasks.tests.core; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| import junit.framework.TestCase; |
| |
| import org.eclipse.jface.resource.ImageDescriptor; |
| import org.eclipse.mylyn.commons.ui.CommonImages; |
| import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants; |
| import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager; |
| import org.eclipse.mylyn.internal.tasks.core.TaskTask; |
| import org.eclipse.mylyn.internal.tasks.ui.IBrandManager; |
| import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; |
| import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector; |
| import org.eclipse.mylyn.tasks.core.ITask; |
| import org.eclipse.mylyn.tasks.core.TaskRepository; |
| import org.eclipse.mylyn.tasks.tests.support.MockRepositoryConnectorAdapter.DynamicMockRepositoryConnectorUi; |
| import org.eclipse.mylyn.tasks.tests.support.MockRepositoryConnectorDescriptor.DynamicMockRepositoryConnector; |
| import org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi; |
| import org.eclipse.mylyn.tasks.ui.TasksUi; |
| import org.eclipse.swt.graphics.Image; |
| import org.junit.After; |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| import com.google.common.collect.ImmutableSet; |
| |
| public class RepositoryConnectorContributorTest extends TestCase { |
| |
| private final IBrandManager manager = TasksUiPlugin.getDefault().getBrandManager(); |
| |
| private final DynamicMockRepositoryConnector connector = new DynamicMockRepositoryConnector(); |
| |
| private final Map<String, TaskRepository> repositories = new HashMap<>(); |
| |
| private final Map<String, ITask> tasks = new HashMap<>(); |
| |
| private TaskRepository repositoryForConnectorWithNoBrands; |
| |
| private TaskTask taskForConnectorWithNoBrands; |
| |
| @Before |
| @Override |
| protected void setUp() throws Exception { |
| setUpBrand("org.mylyn"); |
| setUpBrand("org.eclipse"); |
| setUpBrand("unknown"); |
| setUpBrand("exceptional"); |
| setUpBrand(null); |
| |
| String repositoryUrl = "http://mock-connector-with-no-brands"; |
| repositoryForConnectorWithNoBrands = new TaskRepository("mock-connector-with-no-brands", repositoryUrl); |
| repositoryForConnectorWithNoBrands.setProperty(ITasksCoreConstants.PROPERTY_BRAND_ID, "org.mylyn"); |
| TasksUi.getRepositoryManager().addRepository(repositoryForConnectorWithNoBrands); |
| taskForConnectorWithNoBrands = new TaskTask("mock-connector-with-no-brands", repositoryUrl, "1"); |
| } |
| |
| private void setUpBrand(String brand) { |
| String repositoryUrl = "http://mock-" + brand; |
| TaskRepository repository = new TaskRepository(connector.getConnectorKind(), repositoryUrl); |
| repository.setProperty(ITasksCoreConstants.PROPERTY_BRAND_ID, brand); |
| TasksUi.getRepositoryManager().addRepository(repository); |
| repositories.put(brand, repository); |
| tasks.put(brand, new TaskTask(connector.getConnectorKind(), repositoryUrl, "1")); |
| } |
| |
| @Override |
| @After |
| protected void tearDown() throws Exception { |
| for (TaskRepository repository : repositories.values()) { |
| ((TaskRepositoryManager) TasksUi.getRepositoryManager()).removeRepository(repository); |
| } |
| ((TaskRepositoryManager) TasksUi.getRepositoryManager()).removeRepository(repositoryForConnectorWithNoBrands); |
| } |
| |
| @Test |
| public void testConnectorContributed() { |
| AbstractRepositoryConnector connector = TasksUi.getRepositoryConnector(DynamicMockRepositoryConnector.CONNECTOR_KIND); |
| assertNotNull("Expected dynamically contributed mock connector", connector); |
| assertEquals(DynamicMockRepositoryConnector.class, connector.getClass()); |
| assertEquals(DynamicMockRepositoryConnector.CONNECTOR_KIND, connector.getConnectorKind()); |
| } |
| |
| @Test |
| public void testConnectorUiContributed() { |
| AbstractRepositoryConnectorUi connector = TasksUi.getRepositoryConnectorUi(DynamicMockRepositoryConnector.CONNECTOR_KIND); |
| assertNotNull("Expected connector UI contributed by MockRepositoryConnectorAdapter", connector); |
| assertEquals(DynamicMockRepositoryConnectorUi.class, connector.getClass()); |
| assertEquals(DynamicMockRepositoryConnector.CONNECTOR_KIND, connector.getConnectorKind()); |
| } |
| |
| @Test |
| public void testDefaultBrandingIcon() { |
| Image brandingImage = TasksUiPlugin.getDefault() |
| .getBrandManager() |
| .getDefaultBrandingIcon(DynamicMockRepositoryConnector.CONNECTOR_KIND); |
| assertNotNull("Expected branding image contributed by MockRepositoryConnectorAdapter", brandingImage); |
| assertEquals(16, brandingImage.getImageData().height); |
| } |
| |
| @Test |
| public void testDefaultOverlayIcon() { |
| ImageDescriptor overlay = TasksUiPlugin.getDefault() |
| .getBrandManager() |
| .getDefaultOverlayIcon(DynamicMockRepositoryConnector.CONNECTOR_KIND); |
| assertNotNull("Expected overlay image contributed by MockRepositoryConnectorAdapter", overlay); |
| assertEquals(8, overlay.getImageData().height); |
| } |
| |
| @Test |
| public void testGetBrands() throws Exception { |
| assertEquals(ImmutableSet.of("org.mylyn", "org.eclipse"), manager.getBrands(connector.getConnectorKind())); |
| } |
| |
| @Test |
| public void testGetConnectorLabel() { |
| assertEquals("Label for org.mylyn", manager.getConnectorLabel(connector, "org.mylyn")); |
| assertEquals("Label for org.eclipse", manager.getConnectorLabel(connector, "org.eclipse")); |
| assertEquals(connector.getLabel(), manager.getConnectorLabel(connector, "unknown")); |
| assertEquals(connector.getLabel(), manager.getConnectorLabel(connector, "exceptional")); |
| assertEquals(connector.getLabel(), manager.getConnectorLabel(connector, null)); |
| AbstractRepositoryConnector mockConnector = new DynamicMockRepositoryConnector() { |
| @Override |
| public String getConnectorKind() { |
| return "mock-connector-with-no-brands"; |
| }; |
| }; |
| assertEquals(connector.getLabel(), manager.getConnectorLabel(mockConnector, "org.mylyn")); |
| } |
| |
| @Test |
| public void testGetBrandingIcon() { |
| assertBrandingIconHeight(3, "org.mylyn"); |
| assertBrandingIconHeight(2, "org.eclipse"); |
| assertBrandingIconHeight(16, "unknown"); |
| assertBrandingIconHeight(16, "exceptional"); |
| assertBrandingIconHeight(16, null); |
| |
| assertNull(manager.getBrandingIcon(repositoryForConnectorWithNoBrands.getConnectorKind(), "org.mylyn")); |
| assertNull(manager.getBrandingIcon(repositoryForConnectorWithNoBrands)); |
| } |
| |
| private void assertBrandingIconHeight(int expectedHeight, String brand) { |
| assertIconHeight(expectedHeight, manager.getBrandingIcon(connector.getConnectorKind(), brand)); |
| assertIconHeight(expectedHeight, manager.getBrandingIcon(repositories.get(brand))); |
| } |
| |
| @Test |
| public void testGetOverlayIcon() { |
| assertOverlayIconHeight(5, "org.mylyn"); |
| assertOverlayIconHeight(4, "org.eclipse"); |
| assertOverlayIconHeight(8, "unknown"); |
| assertOverlayIconHeight(8, "exceptional"); |
| assertOverlayIconHeight(8, null); |
| |
| assertNull(manager.getOverlayIcon(repositoryForConnectorWithNoBrands.getConnectorKind(), "org.mylyn")); |
| assertNull(manager.getOverlayIcon(repositoryForConnectorWithNoBrands)); |
| assertNull(manager.getOverlayIcon(taskForConnectorWithNoBrands)); |
| } |
| |
| private void assertOverlayIconHeight(int expectedHeight, String brand) { |
| assertIconHeight(expectedHeight, manager.getOverlayIcon(connector.getConnectorKind(), brand)); |
| assertIconHeight(expectedHeight, manager.getOverlayIcon(repositories.get(brand))); |
| assertIconHeight(expectedHeight, manager.getOverlayIcon(tasks.get(brand))); |
| } |
| |
| private void assertIconHeight(int expectedHeight, Image image) { |
| assertEquals(expectedHeight, image.getImageData().height); |
| } |
| |
| private void assertIconHeight(int expectedHeight, ImageDescriptor descriptor) { |
| assertEquals(expectedHeight, CommonImages.getImage(descriptor).getImageData().height); |
| } |
| } |