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.*; 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.api.SerializationService; import org.openmrs.module.reporting.cohort.definition.CohortDefinition; import org.openmrs.module.reporting.cohort.definition.GenderCohortDefinition; import org.openmrs.module.reporting.cohort.definition.SqlCohortDefinition; import org.openmrs.module.reporting.data.patient.definition.PatientDataDefinition; import org.openmrs.module.reporting.data.patient.definition.PatientIdDataDefinition; import org.openmrs.module.reporting.data.patient.definition.SqlPatientDataDefinition; import org.openmrs.module.reporting.serializer.ReportingSerializer; 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 ImplementerConfiguredPatientDataDefinitionLibraryTest { public static final String SQL_QUERY = "select patient_id, patient_id from patient"; private File directory; private ImplementerConfiguredPatientDataDefinitionLibrary library; @Before public void setUp() throws Exception { directory = mock(File.class); when(directory.exists()).thenReturn(true); when(directory.isDirectory()).thenReturn(true); library = new ImplementerConfiguredPatientDataDefinitionLibrary(); 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.patientData.patientId")); PatientDataDefinition definition = library.getDefinition("configuration.definitionlibrary.patientData.patientId"); assertThat(definition, instanceOf(SqlPatientDataDefinition.class)); assertThat(((SqlPatientDataDefinition) definition).getSql(), is(SQL_QUERY)); } @Test public void testSerializedDefinition() throws Exception { when(directory.listFiles()).thenReturn(new File[] { new File("patientId.reportingserializerxml") }); mockStatic(OpenmrsUtil.class); when(OpenmrsUtil.getFileAsString(any(File.class))). thenReturn("<org.openmrs.module.reporting.data.patient.definition.PatientIdDataDefinition/>"); assertThat(library.getDefinitionSummaries().size(), is(1)); assertThat(library.getDefinitionSummaries().get(0).getKey(), is("configuration.definitionlibrary.patientData.patientId")); PatientDataDefinition definition = library.getDefinition("configuration.definitionlibrary.patientData.patientId"); assertThat(definition, instanceOf(PatientIdDataDefinition.class)); } }