| /******************************************************************************** |
| * Copyright (c) 2015-2019 Contributors to the Eclipse Foundation |
| * |
| * See the NOTICE file(s) distributed with this work for additional |
| * information regarding copyright ownership. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * http://www.eclipse.org/legal/epl-2.0. |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| ********************************************************************************/ |
| |
| package org.eclipse.mdm.businessobjects.boundary; |
| |
| import static org.mockito.Mockito.doThrow; |
| import static org.mockito.Mockito.verify; |
| import static org.mockito.Mockito.verifyNoMoreInteractions; |
| import static org.mockito.Mockito.when; |
| |
| import java.util.Optional; |
| |
| import org.eclipse.mdm.api.base.query.DataAccessException; |
| import org.eclipse.mdm.api.dflt.ApplicationContext; |
| import org.eclipse.mdm.api.dflt.EntityManager; |
| import org.eclipse.mdm.api.dflt.model.Project; |
| import org.eclipse.mdm.businessobjects.control.I18NActivity; |
| import org.eclipse.mdm.businessobjects.control.MDMEntityAccessException; |
| import org.eclipse.mdm.businessobjects.control.NavigationActivity; |
| import org.eclipse.mdm.businessobjects.control.SearchActivity; |
| import org.eclipse.mdm.connector.boundary.ConnectorService; |
| import org.junit.Before; |
| import org.junit.Test; |
| import org.mockito.Mockito; |
| |
| public class ProjectServiceTest { |
| |
| ApplicationContext context = Mockito.mock(ApplicationContext.class); |
| EntityManager em = Mockito.mock(EntityManager.class); |
| ConnectorService connectorService = Mockito.mock(ConnectorService.class); |
| SearchActivity searchActivity = Mockito.mock(SearchActivity.class); |
| NavigationActivity navigationActivity = Mockito.mock(NavigationActivity.class); |
| I18NActivity i18nActivity = Mockito.mock(I18NActivity.class); |
| |
| ProjectService service = new ProjectService(connectorService, searchActivity, i18nActivity); |
| |
| @Before |
| public void init() { |
| when(context.getEntityManager()).thenReturn(Optional.of(em)); |
| when(connectorService.getContextByName("MDMTEST")).thenReturn(context); |
| } |
| |
| @Test |
| public void testGetProject() throws DataAccessException { |
| service.getProject("MDMTEST", "1"); |
| |
| verify(em).load(Project.class, "1"); |
| verifyNoMoreInteractions(searchActivity); |
| } |
| |
| @Test |
| public void testGetProjectsEmptyFilter() throws DataAccessException { |
| service.getProjects("MDMTEST", ""); |
| |
| verify(em).loadAll(Mockito.any()); |
| verifyNoMoreInteractions(searchActivity); |
| } |
| |
| @Test |
| public void testGetProjectsNullFilter() throws DataAccessException { |
| service.getProjects("MDMTEST", null); |
| |
| verify(em).loadAll(Mockito.any()); |
| verifyNoMoreInteractions(searchActivity); |
| } |
| |
| @Test(expected = MDMEntityAccessException.class) |
| public void testGetProjectsWrongEnvironment() { |
| doThrow(MDMEntityAccessException.class).when(connectorService).getContextByName("wrongEnvironment"); |
| |
| service.getProjects("wrongEnvironment", "Project.Name eq crash"); |
| } |
| |
| @Test |
| public void testGetProjects() { |
| service.getProjects("MDMTEST", "Project.Name eq crash"); |
| |
| verify(searchActivity).search(context, Project.class, "Project.Name eq crash"); |
| } |
| |
| @Test |
| public void testGetSearchAttributes() { |
| service.getSearchAttributes("MDMTEST"); |
| |
| verify(searchActivity).listAvailableAttributes(context, Project.class); |
| } |
| |
| @Test |
| public void testLocalizeAttributes() { |
| service.localizeAttributes("MDMTEST"); |
| verify(i18nActivity).localizeAttributes("MDMTEST", Project.class); |
| } |
| |
| @Test |
| public void testLocalizeType() { |
| service.localizeType("MDMTEST"); |
| verify(i18nActivity).localizeType("MDMTEST", Project.class); |
| } |
| |
| } |