package org.openmrs.module.reporting.cohort.definition.evaluator;
import org.junit.Before;
import org.junit.Test;
import org.openmrs.module.reporting.cohort.EvaluatedCohort;
import org.openmrs.module.reporting.cohort.definition.EncounterCohortDefinition;
import org.openmrs.module.reporting.cohort.definition.MappedParametersCohortDefinition;
import org.openmrs.module.reporting.cohort.definition.service.CohortDefinitionService;
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.test.BaseModuleContextSensitiveTest;
import org.springframework.beans.factory.annotation.Autowired;
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 MappedParametersCohortDefinitionEvaluatorTest extends BaseModuleContextSensitiveTest {
protected static final String XML_DATASET_PATH = "org/openmrs/module/reporting/include/";
protected static final String XML_REPORT_TEST_DATASET = "ReportTestDataset";
@Autowired
CohortDefinitionService service;
@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");
EncounterCohortDefinition original = new EncounterCohortDefinition();
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", "startDate");
renamedParameters.put("onOrBefore", "endDate");
MappedParametersCohortDefinition renamed = new MappedParametersCohortDefinition(original, renamedParameters);
EvaluationContext context = new EvaluationContext();
context.addParameterValue("startDate", date);
context.addParameterValue("endDate", date);
EvaluatedCohort result = service.evaluate(renamed, context);
assertThat(result.size(), is(1));
assertTrue(result.contains(7));
}
}