package org.grails.validation; import grails.validation.AbstractConstraintTests; import grails.validation.ConstrainedProperty; import grails.validation.TestClass; /** * Test cases for 'nullable' constraint. * * @author Sergey Nebolsin (<a href="mailto:nebolsin@gmail.com"/>) */ public class NullableConstraint2Tests extends AbstractConstraintTests { @Override protected Class<?> getConstraintClass() { return NullableConstraint.class; } public void testValidation() { testConstraintMessageCodes( getConstraint("testString", Boolean.FALSE), null, new String[] {"testClass.testString.nullable.error","testClass.testString.nullable"}, new Object[] {"testString",TestClass.class }); testConstraintPassed( getConstraint("testString", Boolean.FALSE), "test"); testConstraintPassed( getConstraint("testString", Boolean.TRUE), ""); testConstraintFailedAndVetoed( getConstraint("testString", Boolean.FALSE), null); testConstraintDefaultMessage( getConstraint("testString", Boolean.FALSE), null, "Property [{0}] of class [{1}] cannot be null"); } public void testCreation() { NullableConstraint constraint = (NullableConstraint) getConstraint("testString", Boolean.FALSE); assertEquals(ConstrainedProperty.NULLABLE_CONSTRAINT, constraint.getName()); assertTrue(constraint.supports(String.class)); assertTrue(constraint.supports(Object.class)); assertFalse(constraint.supports(int.class)); assertFalse(constraint.supports(float.class)); assertFalse(constraint.supports(null)); assertFalse(constraint.isNullable()); try { getConstraint("testString", "wrong"); fail("NullableConstraint must throw an exception for non-boolean parameters."); } catch(IllegalArgumentException iae) { // Great } } }