package org.openmrs.module.reporting.validator;
import java.util.HashMap;
import org.junit.Assert;
import org.junit.Test;
import org.openmrs.module.reporting.cohort.definition.CohortDefinition;
import org.openmrs.module.reporting.cohort.definition.CompositionCohortDefinition;
import org.openmrs.module.reporting.evaluation.parameter.Mapped;
import org.openmrs.test.BaseModuleContextSensitiveTest;
import org.openmrs.test.Verifies;
import org.springframework.validation.BindException;
import org.springframework.validation.Errors;
/**
* Tests methods on the {@link CohortDefinitionValidator} class.
*/
public class CompositionCohortDefinitionValidatorTest extends BaseModuleContextSensitiveTest {
/**
* @see {@link CohortDefinitionValidator#validate(Object,Errors)}
*/
@Test
@Verifies(value = "should fail validation if searches is null", method = "validate(Object,Errors)")
public void validate_shouldFailValidationIfSearchesIsNull() throws Exception {
CompositionCohortDefinition compositionCohortDefinition = new CompositionCohortDefinition();
compositionCohortDefinition.setSearches(null);
compositionCohortDefinition.setCompositionString("Some Composition String");
Errors errors = new BindException(compositionCohortDefinition, "cohortDefinition");
new CohortDefinitionValidator().validate(compositionCohortDefinition, errors);
Assert.assertTrue(errors.hasErrors());
}
/**
* @see {@link CohortDefinitionValidator#validate(Object,Errors)}
*/
@Test
@Verifies(value = "should fail validation if searches is empty", method = "validate(Object,Errors)")
public void validate_shouldFailValidationIfSearchesIsEmpty() throws Exception {
CompositionCohortDefinition compositionCohortDefinition = new CompositionCohortDefinition();
compositionCohortDefinition.setSearches(new HashMap<String, Mapped<CohortDefinition>>());
compositionCohortDefinition.setCompositionString("Some Composition String");
Errors errors = new BindException(compositionCohortDefinition, "cohortDefinition");
new CohortDefinitionValidator().validate(compositionCohortDefinition, errors);
Assert.assertTrue(errors.hasErrors());
}
/**
* @see {@link CohortDefinitionValidator#validate(Object,Errors)}
*/
@Test
@Verifies(value = "should fail validation if composition string is null", method = "validate(Object,Errors)")
public void validate_shouldFailValidationIfCompositionStringIsNull() throws Exception {
HashMap<String, Mapped<CohortDefinition>> searches = new HashMap<String, Mapped<CohortDefinition>>();
searches.put("Some Key", new Mapped());
CompositionCohortDefinition compositionCohortDefinition = new CompositionCohortDefinition();
compositionCohortDefinition.setSearches(searches);
compositionCohortDefinition.setCompositionString(null);
Errors errors = new BindException(compositionCohortDefinition, "cohortDefinition");
new CohortDefinitionValidator().validate(compositionCohortDefinition, errors);
Assert.assertTrue(errors.hasErrors());
}
/**
* @see {@link CohortDefinitionValidator#validate(Object,Errors)}
*/
@Test
@Verifies(value = "should fail validation if composition string is empty", method = "validate(Object,Errors)")
public void validate_shouldFailValidationIfCompositionStringIsEmpty() throws Exception {
HashMap<String, Mapped<CohortDefinition>> searches = new HashMap<String, Mapped<CohortDefinition>>();
searches.put("Some Key", new Mapped());
CompositionCohortDefinition compositionCohortDefinition = new CompositionCohortDefinition();
compositionCohortDefinition.setSearches(searches);
compositionCohortDefinition.setCompositionString(" ");
Errors errors = new BindException(compositionCohortDefinition, "cohortDefinition");
new CohortDefinitionValidator().validate(compositionCohortDefinition, errors);
Assert.assertTrue(errors.hasErrors());
}
/**
* @see {@link CohortDefinitionValidator#validate(Object,Errors)}
*/
@Test
@Verifies(value = "should pass validation if all fields are correct", method = "validate(Object,Errors)")
public void validate_shouldPassValidationIfAllFieldsAreCorrect() throws Exception {
HashMap<String, Mapped<CohortDefinition>> searches = new HashMap<String, Mapped<CohortDefinition>>();
searches.put("Some Key", new Mapped<CohortDefinition>());
CompositionCohortDefinition compositionCohortDefinition = new CompositionCohortDefinition();
compositionCohortDefinition.setName("Test CD");
compositionCohortDefinition.setSearches(searches);
compositionCohortDefinition.setCompositionString("Some Composition String");
Errors errors = new BindException(compositionCohortDefinition, "cohortDefinition");
new CohortDefinitionValidator().validate(compositionCohortDefinition, errors);
Assert.assertFalse(errors.hasErrors());
}
}