package org.openmrs.module.reporting.definition.service;
import static org.hamcrest.Matchers.empty;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertThat;
import org.junit.Test;
import org.openmrs.module.reporting.dataset.definition.CohortIndicatorAndDimensionDataSetDefinition;
import org.openmrs.module.reporting.dataset.definition.service.DataSetDefinitionService;
import org.openmrs.test.BaseModuleContextSensitiveTest;
import org.springframework.beans.factory.annotation.Autowired;
public class DefinitionServiceTest extends BaseModuleContextSensitiveTest {
@Autowired
DataSetDefinitionService dataSetDefinitionService;
/**
* This test passes on JDK 1.6, but fails on JDK 1.7. See REPORT-468.
*
* In JDK 1.7 inner classes must be static to be properly deserialized by xstream.
*
* @see DefinitionService#getDefinitionByUuid(String)
* @verifies deserialize CohortIndicatorAndDimensionDataSetDefinition
*/
@Test
public void getDefinitionByUuid_shouldDeserializeCohortIndicatorAndDimensionDataSetDefinition() throws Exception {
executeDataSet("org/openmrs/module/reporting/include/DefinitionServiceTest.xml");
CohortIndicatorAndDimensionDataSetDefinition persistedDefinition = (CohortIndicatorAndDimensionDataSetDefinition) dataSetDefinitionService
.getDefinitionByUuid("bb1dc014-82a0-4847-8bcd-f74f91282e8d");
assertThat(persistedDefinition, notNullValue());
assertThat(persistedDefinition.getName(), is("Patients in 2006 by indicators"));
assertThat(persistedDefinition.getSpecifications(), not(empty()));
}
}