package org.openmrs.module.reporting.query.encounter.evaluator; import org.junit.Before; import org.junit.Test; import org.openmrs.api.context.Context; import org.openmrs.module.reporting.common.DateUtil; import org.openmrs.module.reporting.common.TestUtil; import org.openmrs.module.reporting.evaluation.EvaluationContext; import org.openmrs.module.reporting.evaluation.parameter.Parameter; import org.openmrs.module.reporting.query.obs.ObsQueryResult; import org.openmrs.module.reporting.query.obs.definition.BasicObsQuery; import org.openmrs.module.reporting.query.obs.definition.MappedParametersObsQuery; import org.openmrs.module.reporting.query.obs.service.ObsQueryService; import org.openmrs.test.BaseModuleContextSensitiveTest; import java.util.Date; import java.util.HashMap; import java.util.Map; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; public class MappedParametersObsQueryEvaluatorTest extends BaseModuleContextSensitiveTest { protected static final String XML_DATASET_PATH = "org/openmrs/module/reporting/include/"; protected static final String XML_REPORT_TEST_DATASET = "ReportTestDataset"; @Before public void setup() throws Exception { executeDataSet(XML_DATASET_PATH + new TestUtil().getTestDatasetFilename(XML_REPORT_TEST_DATASET)); } @Test public void testEvaluate() throws Exception { Date date = DateUtil.parseDate("2008-08-01", "yyyy-MM-dd"); BasicObsQuery original = new BasicObsQuery(); original.addParameter(new Parameter("onOrAfter", "On Or After", Date.class)); original.addParameter(new Parameter("onOrBefore", "On Or Before", Date.class)); Map<String, String> renamedParameters = new HashMap<String, String>(); renamedParameters.put("onOrAfter", "date"); renamedParameters.put("onOrBefore", "date+1m"); MappedParametersObsQuery renamed = new MappedParametersObsQuery(original, renamedParameters); EvaluationContext context = new EvaluationContext(); context.addParameterValue("date", date); ObsQueryResult result = Context.getService(ObsQueryService.class).evaluate(renamed, context); assertThat(result.getSize(), is(10)); assertTrue(result.contains(6) && result.contains(7) && result.contains(9) && result.contains(10) && result.contains(11) && result.contains(12) && result.contains(13) && result.contains(14) && result.contains(15) && result.contains(16)); } }