package org.openmrs.module.reporting.definition.library.implementerconfigured; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.powermock.api.mockito.PowerMockito.mockStatic; import static org.powermock.api.mockito.PowerMockito.when; import java.io.File; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.openmrs.module.reporting.data.encounter.definition.EncounterDataDefinition; import org.openmrs.module.reporting.data.encounter.definition.EncounterDatetimeDataDefinition; import org.openmrs.module.reporting.data.encounter.definition.SqlEncounterDataDefinition; import org.openmrs.module.reporting.data.visit.definition.SqlVisitDataDefinition; import org.openmrs.module.reporting.data.visit.definition.VisitDataDefinition; import org.openmrs.module.reporting.data.visit.definition.VisitIdDataDefinition; import org.openmrs.util.OpenmrsUtil; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) @PrepareForTest(OpenmrsUtil.class) public class ImplementerConfiguredVisitDataDefinitionLibraryTest { public static final String SQL_QUERY = "select visit_id, patient_id from visit"; private File directory; private ImplementerConfiguredVisitDataDefinitionLibrary library; @Before public void setUp() throws Exception { directory = mock(File.class); when(directory.exists()).thenReturn(true); when(directory.isDirectory()).thenReturn(true); library = new ImplementerConfiguredVisitDataDefinitionLibrary(); library.setDirectory(directory); } @Test public void testSqlDefinition() throws Exception { when(directory.listFiles()).thenReturn(new File[] { new File("patientId.sql") }); mockStatic(OpenmrsUtil.class); when(OpenmrsUtil.getFileAsString(any(File.class))).thenReturn(SQL_QUERY); assertThat(library.getDefinitionSummaries().size(), is(1)); assertThat(library.getDefinitionSummaries().get(0).getKey(), is("configuration.definitionlibrary.visitData.patientId")); VisitDataDefinition definition = library.getDefinition("configuration.definitionlibrary.visitData.patientId"); assertThat(definition, instanceOf(SqlVisitDataDefinition.class)); assertThat(((SqlVisitDataDefinition) definition).getSql(), is(SQL_QUERY)); } @Test public void testSerializedDefinition() throws Exception { when(directory.listFiles()).thenReturn(new File[] { new File("visitId.reportingserializerxml") }); mockStatic(OpenmrsUtil.class); when(OpenmrsUtil.getFileAsString(any(File.class))). thenReturn("<org.openmrs.module.reporting.data.visit.definition.VisitIdDataDefinition/>"); assertThat(library.getDefinitionSummaries().size(), is(1)); assertThat(library.getDefinitionSummaries().get(0).getKey(), is("configuration.definitionlibrary.visitData.visitId")); VisitDataDefinition definition = library.getDefinition("configuration.definitionlibrary.visitData.visitId"); assertThat(definition, instanceOf(VisitIdDataDefinition.class)); } }