package org.openmrs.module.reporting.validator; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Test; import org.openmrs.ProgramWorkflowState; import org.openmrs.api.context.Context; import org.openmrs.module.reporting.cohort.definition.PatientStateCohortDefinition; 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 PatientStateCohortDefinitionValidatorTest extends BaseModuleContextSensitiveTest { /** * @see {@link CohortDefinitionValidator#validate(Object,Errors)} */ @Test @Verifies(value = "should fail validation if states is null", method = "validate(Object,Errors)") public void validate_shouldFailValidationIfStatesIsNull() throws Exception { PatientStateCohortDefinition patientStateCohortDefinition = new PatientStateCohortDefinition(); patientStateCohortDefinition.setStates(null); Errors errors = new BindException(patientStateCohortDefinition, "cohortDefinition"); new CohortDefinitionValidator().validate(patientStateCohortDefinition, errors); Assert.assertTrue(errors.hasErrors()); } /** * @see {@link CohortDefinitionValidator#validate(Object,Errors)} */ @Test @Verifies(value = "should fail validation if states is empty", method = "validate(Object,Errors)") public void validate_shouldFailValidationIfStatesIsEmpty() throws Exception { PatientStateCohortDefinition patientStateCohortDefinition = new PatientStateCohortDefinition(); patientStateCohortDefinition.setStates(new ArrayList<ProgramWorkflowState>()); Errors errors = new BindException(patientStateCohortDefinition, "cohortDefinition"); new CohortDefinitionValidator().validate(patientStateCohortDefinition, 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 { List<ProgramWorkflowState> states = new ArrayList<ProgramWorkflowState>(); ProgramWorkflowState programWorkflowState = new ProgramWorkflowState(); programWorkflowState.setName("Name"); programWorkflowState.setConcept(Context.getConceptService().getConcept(10)); states.add(programWorkflowState); PatientStateCohortDefinition patientStateCohortDefinition = new PatientStateCohortDefinition(); patientStateCohortDefinition.setName("Test CD"); patientStateCohortDefinition.setStates(states); Errors errors = new BindException(patientStateCohortDefinition, "cohortDefinition"); new CohortDefinitionValidator().validate(patientStateCohortDefinition, errors); Assert.assertFalse(errors.hasErrors()); } }