BaseAttributeTypeValidatorTest.java

package org.openmrs.validator;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.openmrs.VisitAttributeType;
import org.openmrs.attribute.AttributeType;
import org.springframework.validation.BindException;
import org.springframework.validation.Errors;

public class BaseAttributeTypeValidatorTest {
	
	VisitAttributeTypeValidator validator;
	
	@SuppressWarnings("rawtypes")
	VisitAttributeType attributeType;
	
	BindException errors;
	
	@Before
	public void before() {
		validator = new VisitAttributeTypeValidator();
		attributeType = new VisitAttributeType();
		errors = new BindException(attributeType, "attributeType");
	}
	
	/**
	 * @see BaseAttributeTypeValidator#validate(Object,Errors)
	 * @verifies not allow maxOccurs less than 1
	 */
	@Test
	public void validate_shouldNotAllowMaxOccursLessThan1() throws Exception {
		attributeType.setMaxOccurs(0);
		validator.validate(attributeType, errors);
		Assert.assertTrue(errors.getFieldErrors("maxOccurs").size() > 0);
	}
	
	/**
	 * @see BaseAttributeTypeValidator#validate(Object,Errors)
	 * @verifies not allow maxOccurs less than minOccurs
	 */
	@Test
	public void validate_shouldNotAllowMaxOccursLessThanMinOccurs() throws Exception {
		attributeType.setMinOccurs(3);
		attributeType.setMaxOccurs(2);
		validator.validate(attributeType, errors);
		Assert.assertTrue(errors.getFieldErrors("maxOccurs").size() > 0);
	}
	
	/**
	 * @see BaseAttributeTypeValidator#validate(Object,Errors)
	 * @verifies require datatypeClassname
	 */
	@Test
	public void validate_shouldRequireDatatypeClassname() throws Exception {
		validator.validate(attributeType, errors);
		Assert.assertTrue(errors.getFieldErrors("datatypeClassname").size() > 0);
	}
	
	/**
	 * @see BaseAttributeTypeValidator#validate(Object,Errors)
	 * @verifies require minOccurs
	 */
	@Test
	public void validate_shouldRequireMinOccurs() throws Exception {
		attributeType.setMinOccurs(null);
		validator.validate(attributeType, errors);
		Assert.assertTrue(errors.getFieldErrors("minOccurs").size() > 0);
	}
	
	/**
	 * @see BaseAttributeTypeValidator#validate(Object,Errors)
	 * @verifies require name
	 */
	@Test
	public void validate_shouldRequireName() throws Exception {
		validator.validate(attributeType, errors);
		Assert.assertTrue(errors.getFieldErrors("name").size() > 0);
	}
}