package com.jaspersoft.jasperserver.jaxrs.client.apiadapters.connections; import com.jaspersoft.jasperserver.dto.connection.metadata.TableMetadata; import com.jaspersoft.jasperserver.dto.resources.ClientCustomDataSource; import com.jaspersoft.jasperserver.jaxrs.client.core.SessionStorage; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.testng.PowerMockTestCase; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; import static org.powermock.api.mockito.PowerMockito.verifyNew; import static org.powermock.api.mockito.PowerMockito.whenNew; import static org.testng.Assert.assertSame; /** * <p/> * <p/> * * @author tetiana.iefimenko * @version $Id$ * @see */ @PrepareForTest({ConnectionsService.class}) public class ConnectionsServiceTest extends PowerMockTestCase { private SessionStorage sessionStorageMock; private SingleConnectionsAdapter singleConnectionsAdapterMock; @BeforeMethod public void before() { sessionStorageMock = mock(SessionStorage.class); singleConnectionsAdapterMock = mock(SingleConnectionsAdapter.class); } @AfterMethod public void after() { reset(sessionStorageMock, singleConnectionsAdapterMock); } @Test public void should_pass_session_storage_to_parent_adapter() { ConnectionsService attributesService = new ConnectionsService(sessionStorageMock); SessionStorage retrieved = attributesService.getSessionStorage(); assertSame(retrieved, sessionStorageMock); } @Test(expectedExceptions = IllegalArgumentException.class) public void should_throw_an_exception_when_sessionStorage_is_null() { // When new ConnectionsService(null); // Then // should be thrown an exception } @Test public void should_return_proper_SingleConnectionAdapter_instance_by_uuid() throws Exception { // Given whenNew(SingleConnectionsAdapter.class) .withArguments(sessionStorageMock, Object.class, null, Object.class, null, "someUuId") .thenReturn(singleConnectionsAdapterMock); ConnectionsService connectionsService = new ConnectionsService(sessionStorageMock); // When SingleConnectionsAdapter retrieved = connectionsService.connection("someUuId"); // Then assertSame(singleConnectionsAdapterMock, retrieved); verifyNew(SingleConnectionsAdapter.class, times(1)) .withArguments(sessionStorageMock, Object.class, null, Object.class, null, "someUuId"); } @Test public void should_return_proper_SingleConnectionAdapter_instance_by_class_mimeType_uuid() throws Exception { // Given whenNew(SingleConnectionsAdapter.class) .withArguments(sessionStorageMock, ClientCustomDataSource.class, "someMimeType", Object.class, null, "someUuId") .thenReturn(singleConnectionsAdapterMock); ConnectionsService connectionsService = new ConnectionsService(sessionStorageMock); // When SingleConnectionsAdapter retrieved = connectionsService.connection(ClientCustomDataSource.class, "someMimeType", "someUuId"); // Then assertSame(singleConnectionsAdapterMock, retrieved); verifyNew(SingleConnectionsAdapter.class, times(1)) .withArguments(sessionStorageMock, ClientCustomDataSource.class, "someMimeType", Object.class, null, "someUuId"); } @Test public void should_return_proper_SingleConnectionAdapter_instance_by_connection_metadata_class_mimeType_uuid() throws Exception { // Given whenNew(SingleConnectionsAdapter.class) .withArguments(sessionStorageMock, ClientCustomDataSource.class, "someConnectionMimeType", TableMetadata.class, "someMetadataMimeType", "someUuId") .thenReturn(singleConnectionsAdapterMock); ConnectionsService connectionsService = new ConnectionsService(sessionStorageMock); // When SingleConnectionsAdapter retrieved = connectionsService. connection(ClientCustomDataSource.class, "someConnectionMimeType", TableMetadata.class, "someMetadataMimeType", "someUuId"); // Then assertSame(singleConnectionsAdapterMock, retrieved); verifyNew(SingleConnectionsAdapter.class, times(1)) .withArguments(sessionStorageMock, ClientCustomDataSource.class, "someConnectionMimeType", TableMetadata.class, "someMetadataMimeType", "someUuId"); } }