/* vim: set ts=2 et sw=2 cindent fo=qroca: */
package com.globant.katari.core.application;
import org.springframework.validation.BindException;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import junit.framework.TestCase;
/** Tests the command validator.
*
* @author nicolas.frontini
*/
public class CommandValidatorTest extends TestCase {
/** The command validator.
*/
private CommandValidator commandValidator;
/** The sample validatable command.
*/
private SampleValidatableCommand sampleValidatableCommand;
/** The sample command.
*/
private SampleCommand sampleCommand;
/** The sample validatable.
*/
private SampleValidatable sampleValidatable;
/** Initialize the commands.
*/
public void setUp() {
commandValidator = new CommandValidator();
sampleCommand = new SampleCommand();
sampleValidatable = new SampleValidatable();
sampleValidatableCommand = new SampleValidatableCommand();
}
/** Test the supports method.
*/
public final void testSupports() {
assertFalse(commandValidator.supports(sampleCommand.getClass()));
assertTrue(commandValidator.supports(sampleValidatableCommand.getClass()));
assertFalse(commandValidator.supports(this.getClass()));
assertTrue(commandValidator.supports(sampleValidatable.getClass()));
}
/** Test the validate method.
*/
public final void testValidate() {
Errors errors;
// Validate a command. Validate with errors.
errors = new BindException(sampleValidatableCommand,
"sampleValidatableCommand");
commandValidator.validate(sampleValidatableCommand, errors);
assertEquals(1, errors.getErrorCount());
// Validate without errors.
errors = new BindException(
sampleValidatableCommand, "sampleValidatableCommand");
sampleValidatableCommand.setField("Not empty field");
commandValidator.validate(sampleValidatableCommand, errors);
assertEquals(0, errors.getErrorCount());
// Validate a validatable. Validate with errors.
errors = new BindException(sampleValidatable, "sampleValidatable");
commandValidator.validate(sampleValidatable, errors);
assertEquals(1, errors.getErrorCount());
// Validate without errors.
errors = new BindException(sampleValidatable, "sampleValidatable");
sampleValidatable.setField("Not empty field");
commandValidator.validate(sampleValidatable, errors);
assertEquals(0, errors.getErrorCount());
}
/** A sample command.
*/
public class SampleCommand implements Command<Void> {
/** Execute the command.
*
* @return It returns nothing.
*/
public Void execute() {
return null;
}
}
/** A sample validatable command.
*/
public class SampleValidatableCommand implements ValidatableCommand<Void> {
/** A field to validate.
*/
private String field;
/** Gets the field.
*
* @return Returns the field.
*/
public String getField() {
return field;
}
/** Sets the field.
*
* @param theField the field
*/
public void setField(final String theField) {
field = theField;
}
/** Execute the command.
*
* @return It returns nothing.
*/
public Void execute() {
return null;
}
/** Validate the command.
*
* @param errors The errors.
*/
public void validate(final Errors errors) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "field", "required");
}
}
public class SampleValidatable implements Validatable {
/** A field to validate.
*/
private String field;
/** Gets the field.
*
* @return Returns the field.
*/
public String getField() {
return field;
}
/** Sets the field.
*
* @param theField the field
*/
public void setField(final String theField) {
field = theField;
}
/** Validate the object.
*
* @param errors The errors.
*/
public void validate(final Errors errors) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "field", "required");
}
}
}