package com.jaspersoft.jasperserver.jaxrs.client.apiadapters.diagnostic;
import com.jaspersoft.jasperserver.dto.logcapture.CollectorSettings;
import com.jaspersoft.jasperserver.jaxrs.client.core.SessionStorage;
import com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.MandatoryParameterNotFoundException;
import org.mockito.Mock;
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.reset;
import static org.mockito.Mockito.times;
import static org.mockito.MockitoAnnotations.initMocks;
import static org.powermock.api.mockito.PowerMockito.mock;
import static org.powermock.api.mockito.PowerMockito.verifyNew;
import static org.powermock.api.mockito.PowerMockito.whenNew;
import static org.testng.Assert.assertSame;
import static org.testng.AssertJUnit.assertNotNull;
/**
* <p/>
* <p/>
*
* @author tetiana.iefimenko
* @version $Id$
* @see
*/
@PrepareForTest({DiagnosticService.class, SingleDiagnosticCollectorAdapter.class, BatchDiagnosticCollectorsAdapter.class})
public class DiagnosticServiceTest extends PowerMockTestCase {
@Mock
private SessionStorage sessionStorageMock;
@Mock
private BatchDiagnosticCollectorsAdapter batchAdapterMock;
@Mock
private SingleDiagnosticCollectorAdapter singleAdapterMock;
@BeforeMethod
public void before() {
initMocks(this);
}
@Test
public void should_pass_session_storage_to_parent_adapter() {
// When
DiagnosticService service = new DiagnosticService(sessionStorageMock);
SessionStorage retrieved = service.getSessionStorage();
//Then
assertSame(retrieved, sessionStorageMock);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void should_throw_exception_in_parent_adapter() {
// When
new DiagnosticService(null);
//Then
// exception should be thrown
}
@Test
public void should_return_proper_single_adapter_by_collector_settings_instance() throws Exception {
// Given
CollectorSettings collector = new CollectorSettings();
whenNew(SingleDiagnosticCollectorAdapter.class).withArguments(sessionStorageMock, collector).thenReturn(singleAdapterMock);
// When
DiagnosticService service = new DiagnosticService(sessionStorageMock);
SingleDiagnosticCollectorAdapter retrieved = service.forCollector(collector);
// Then
assertNotNull(retrieved);
assertSame(retrieved, singleAdapterMock);
verifyNew(SingleDiagnosticCollectorAdapter.class, times(1)).withArguments(sessionStorageMock, collector);
}
@Test
public void should_return_proper_single_adapter_by_collector_settings_id() throws Exception {
// Given
CollectorSettings collectorSettingsMock = mock(CollectorSettings.class);
collectorSettingsMock.setId("id");
whenNew(CollectorSettings.class).withNoArguments().thenReturn(collectorSettingsMock);
whenNew(SingleDiagnosticCollectorAdapter.class).withArguments(sessionStorageMock, collectorSettingsMock).thenReturn(singleAdapterMock);
// When
DiagnosticService service = new DiagnosticService(sessionStorageMock);
SingleDiagnosticCollectorAdapter retrieved = service.forCollector("id");
// Then
assertNotNull(retrieved);
assertSame(retrieved, singleAdapterMock);
verifyNew(SingleDiagnosticCollectorAdapter.class, times(1)).withArguments(sessionStorageMock, collectorSettingsMock);
}
@Test
public void should_invoke_proper_constructor_and_pass_proper_session_storage_instance() throws Exception {
// Given
whenNew(BatchDiagnosticCollectorsAdapter.class).withArguments(sessionStorageMock).thenReturn(batchAdapterMock);
// When
DiagnosticService service = new DiagnosticService(sessionStorageMock);
BatchDiagnosticCollectorsAdapter retrieved = service.allCollectors();
// Then
assertNotNull(retrieved);
assertSame(retrieved, batchAdapterMock);
verifyNew(BatchDiagnosticCollectorsAdapter.class, times(1)).withArguments(sessionStorageMock);
}
@Test(expectedExceptions = MandatoryParameterNotFoundException.class)
public void should_throw_exception_when_collector_instance_is_null() throws Exception {
// When
DiagnosticService service = new DiagnosticService(sessionStorageMock);
service.forCollector((CollectorSettings) null);
// Then
//exception should be thrown
}
@Test(expectedExceptions = MandatoryParameterNotFoundException.class)
public void should_throw_exception_when_collector_id_is_null() throws Exception {
// When
DiagnosticService service = new DiagnosticService(sessionStorageMock);
service.forCollector((String) null);
// Then
//exception should be thrown
}
@Test(expectedExceptions = MandatoryParameterNotFoundException.class)
public void should_throw_exception_when_collector_id_is_empty() throws Exception {
// When
DiagnosticService service = new DiagnosticService(sessionStorageMock);
service.forCollector("");
// Then
//exception should be thrown
}
@AfterMethod
public void after() {
reset(sessionStorageMock, singleAdapterMock, batchAdapterMock);
}
}