package eu.dnetlib.iis.wf.report; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import com.google.common.collect.ImmutableList; import com.google.gson.JsonElement; import eu.dnetlib.iis.common.report.ReportEntryFactory; import eu.dnetlib.iis.common.schemas.ReportEntry; import eu.dnetlib.iis.wf.report.ReportValueJsonConverterManager; /** * @author madryk */ @RunWith(MockitoJUnitRunner.class) public class ReportValueJsonConverterManagerTest { private ReportValueJsonConverterManager converterManager = new ReportValueJsonConverterManager(); @Mock private ReportValueJsonConverter converter1; @Mock private ReportValueJsonConverter converter2; private ReportEntry reportEntry = ReportEntryFactory.createCounterReportEntry("report.key", 34); @Before public void setup() { converterManager.setConverters(ImmutableList.of(converter1, converter2)); } //------------------------ TESTS -------------------------- @Test(expected = IllegalArgumentException.class) public void convertValue_NO_APPLICABLE_CONVERTER() { // given when(converter1.isApplicable(reportEntry.getType())).thenReturn(false); when(converter2.isApplicable(reportEntry.getType())).thenReturn(false); // execute converterManager.convertValue(reportEntry); } @Test public void convertValue_USE_FIRST_CONVERTER() { // given when(converter1.isApplicable(reportEntry.getType())).thenReturn(true); when(converter2.isApplicable(reportEntry.getType())).thenReturn(false); JsonElement json = mock(JsonElement.class); when(converter1.convertValue(reportEntry)).thenReturn(json); // execute JsonElement retJson = converterManager.convertValue(reportEntry); // assert assertTrue(retJson == json); } @Test public void convertValue_USE_SECOND_CONVERTER() { // given when(converter1.isApplicable(reportEntry.getType())).thenReturn(false); when(converter2.isApplicable(reportEntry.getType())).thenReturn(true); JsonElement json = mock(JsonElement.class); when(converter2.convertValue(reportEntry)).thenReturn(json); // execute JsonElement retJson = converterManager.convertValue(reportEntry); // assert assertTrue(retJson == json); } }