package org.springjutsu.validation.integrationTests; import static org.junit.Assert.assertEquals; import org.junit.Test; import org.springframework.validation.Errors; import org.springjutsu.validation.test.entities.Color; import org.springjutsu.validation.test.entities.Customer; public class ELIntegrationTest extends ValidationIntegrationTest { @Override protected String getXmlSubdirectory() { return "elIntegrationTest"; } @Test public void testSPELvsModelBean() { Customer customer = new Customer(); customer.setFirstName("bob"); customer.setLastName("notBob"); Errors errors = doValidate("testSPELvsModelBean.xml", customer).errors; assertEquals(2, errors.getErrorCount()); assertEquals("messageOverride.errors.matches", errors.getFieldError("firstName").getCode()); assertEquals("messageOverride.errors.matches", errors.getFieldError("lastName").getCode()); } @Test(expected=IllegalStateException.class) public void testErrorPathRequiredForELModel() { Customer customer = new Customer(); customer.setFirstName("cat"); doValidate("testErrorPathRequiredForELModel.xml", customer); } /** * Fix for #26 */ @Test public void testELPathNotMutatedDuringNestedValidation() { Customer customer = new Customer(); customer.setFirstName("bob"); customer.setLastName("notBob"); Customer customerTwo = new Customer(); customerTwo.setFirstName("bob"); customerTwo.setLastName("bob"); customer.setReferredBy(customerTwo); Errors errors = doValidate("testELPathsNotMutated.xml", customer).errors; assertEquals(2, errors.getErrorCount()); assertEquals("messageOverride.errors.matches", errors.getFieldError("firstName").getCode()); assertEquals("messageOverride.errors.matches", errors.getFieldError("referredBy.firstName").getCode()); } /** * Fix for #26 */ @Test public void testELPathNotMutatedDuringTemplateValidation() { Customer customer = new Customer(); customer.setFirstName("bob"); customer.setLastName("notBob"); Customer customerTwo = new Customer(); customerTwo.setFirstName("bob"); customerTwo.setLastName("bob"); customer.setReferredBy(customerTwo); Errors errors = doValidate("testELPathsNotMutatedInTemplates.xml", customer).errors; assertEquals(2, errors.getErrorCount()); assertEquals("messageOverride.errors.matches", errors.getFieldError("firstName").getCode()); assertEquals("messageOverride.errors.matches", errors.getFieldError("referredBy.firstName").getCode()); } @Test public void testCurrentModelAccess() { Customer customer = new Customer(); customer.setFirstName("bob"); customer.setMiddleName("bob"); customer.setLastName("bob"); customer.setFavoriteColor(null); customer.setEmailAddress("bob@bob.bob"); Customer customerTwo = new Customer(); customerTwo.setFirstName("notBob"); customerTwo.setMiddleName("stillNotBob"); customerTwo.setLastName("aintNeverGonnaBeBob"); customerTwo.setEmailAddress("totallyNotBob@notbob.naw"); customerTwo.setFavoriteColor(Color.RED); customer.setReferredBy(customerTwo); Errors errors = doValidate("testCurrentModelAccess.xml", customer).errors; assertEquals(5, errors.getErrorCount()); assertEquals("messageOverride.errors.matches", errors.getFieldError("referredBy.emailAddress").getCode()); assertEquals("messageOverride.errors.matches", errors.getFieldError("referredBy.firstName").getCode()); assertEquals("messageOverride.errors.matches", errors.getFieldError("referredBy.middleName").getCode()); assertEquals("messageOverride.errors.matches", errors.getFieldError("referredBy.lastName").getCode()); assertEquals("messageOverride.errors.matches", errors.getFieldError("referredBy.favoriteColor").getCode()); } }