📄 defaultactionvalidatormanagertest.java
字号:
List validatorList2 = actionValidatorManager.getValidators(SimpleAction2.class, alias); assertFalse(validatorList.size() == validatorList2.size()); } public void testSkipUserMarkerActionLevelShortCircuit() { // get validators List validatorList = actionValidatorManager.getValidators(User.class, null); assertEquals(10, validatorList.size()); try { User user = new User(); user.setName("Mark"); user.setEmail("bad_email"); user.setEmail2("bad_email"); ValidatorContext context = new GenericValidatorContext(user); actionValidatorManager.validate(user, null, context); assertTrue(context.hasFieldErrors()); // check field errors List l = (List) context.getFieldErrors().get("email"); assertNotNull(l); assertEquals(1, l.size()); assertEquals("Not a valid e-mail.", l.get(0)); l = (List) context.getFieldErrors().get("email2"); assertNotNull(l); assertEquals(2, l.size()); assertEquals("Not a valid e-mail2.", l.get(0)); assertEquals("Email2 not from the right company.", l.get(1)); // check action errors assertTrue(context.hasActionErrors()); l = (List) context.getActionErrors(); assertNotNull(l); assertEquals(2, l.size()); // both expression test failed see User-validation.xml assertEquals("Email does not start with mark", l.get(0)); } catch (ValidationException ex) { ex.printStackTrace(); fail("Validation error: " + ex.getMessage()); } } public void testSkipAllActionLevelShortCircuit2() { // get validators List validatorList = actionValidatorManager.getValidators(User.class, null); assertEquals(10, validatorList.size()); try { User user = new User(); user.setName("Mark"); // * mark both email to starts with mark to get pass the action-level validator, // so we could concentrate on testing the field-level validators (User-validation.xml) // * make both email the same to pass the action-level validator at // UserMarker-validation.xml user.setEmail("mark_bad_email_for_field_val@foo.com"); user.setEmail2("mark_bad_email_for_field_val@foo.com"); ValidatorContext context = new GenericValidatorContext(user); actionValidatorManager.validate(user, null, context); assertTrue(context.hasFieldErrors()); // check field errors // we have an error in this field level, email does not ends with mycompany.com List l = (List) context.getFieldErrors().get("email"); assertNotNull(l); assertEquals(1, l.size()); // because email-field-val is short-circuit assertEquals("Email not from the right company.", l.get(0)); // check action errors l = (List) context.getActionErrors(); assertFalse(context.hasActionErrors()); assertEquals(0, l.size()); } catch (ValidationException ex) { ex.printStackTrace(); fail("Validation error: " + ex.getMessage()); } } public void testActionLevelShortCircuit() throws Exception { List validatorList = actionValidatorManager.getValidators(User.class, null); assertEquals(10, validatorList.size()); User user = new User(); // all fields will trigger error, but sc of action-level, cause it to not appear user.setName(null); user.setEmail("tmjee(at)yahoo.co.uk"); user.setEmail("tm_jee(at)yahoo.co.uk"); ValidatorContext context = new GenericValidatorContext(user); actionValidatorManager.validate(user, null, context); // check field level errors // shouldn't have any because action error prevents validation of anything else List l = (List) context.getFieldErrors().get("email2"); assertNull(l); // check action errors assertTrue(context.hasActionErrors()); l = (List) context.getActionErrors(); assertNotNull(l); // we only get one, because UserMarker-validation.xml action-level validator // already sc it :-) assertEquals(1, l.size()); assertEquals("Email not the same as email2", l.get(0)); } public void testShortCircuitNoErrors() { // get validators List validatorList = actionValidatorManager.getValidators(User.class, null); assertEquals(10, validatorList.size()); try { User user = new User(); user.setName("Mark"); user.setEmail("mark@mycompany.com"); user.setEmail2("mark@mycompany.com"); ValidatorContext context = new GenericValidatorContext(user); actionValidatorManager.validate(user, null, context); assertFalse(context.hasErrors()); } catch (ValidationException ex) { ex.printStackTrace(); fail("Validation error: " + ex.getMessage()); } } public void testFieldErrorsOrder() throws Exception { ValidationOrderAction action = new ValidationOrderAction(); actionValidatorManager.validate(action, "actionContext"); Map fieldErrors = action.getFieldErrors(); Iterator i = fieldErrors.entrySet().iterator(); assertNotNull(fieldErrors); assertEquals(fieldErrors.size(), 12); Map.Entry e = (Map.Entry) i.next(); assertEquals(e.getKey(), "username"); assertEquals(((List)e.getValue()).get(0), "username required"); e = (Map.Entry) i.next(); assertEquals(e.getKey(), "password"); assertEquals(((List)e.getValue()).get(0), "password required"); e = (Map.Entry) i.next(); assertEquals(e.getKey(), "confirmPassword"); assertEquals(((List)e.getValue()).get(0), "confirm password required"); e = (Map.Entry) i.next(); assertEquals(e.getKey(), "firstName"); assertEquals(((List)e.getValue()).get(0), "first name required"); e = (Map.Entry) i.next(); assertEquals(e.getKey(), "lastName"); assertEquals(((List)e.getValue()).get(0), "last name required"); e = (Map.Entry) i.next(); assertEquals(e.getKey(), "city"); assertEquals(((List)e.getValue()).get(0), "city is required"); e = (Map.Entry) i.next(); assertEquals(e.getKey(), "province"); assertEquals(((List)e.getValue()).get(0), "province is required"); e = (Map.Entry) i.next(); assertEquals(e.getKey(), "country"); assertEquals(((List)e.getValue()).get(0), "country is required"); e = (Map.Entry) i.next(); assertEquals(e.getKey(), "postalCode"); assertEquals(((List)e.getValue()).get(0), "postal code is required"); e = (Map.Entry) i.next(); assertEquals(e.getKey(), "email"); assertEquals(((List)e.getValue()).get(0), "email is required"); e = (Map.Entry) i.next(); assertEquals(e.getKey(), "website"); assertEquals(((List)e.getValue()).get(0), "website is required"); e = (Map.Entry) i.next(); assertEquals(e.getKey(), "passwordHint"); assertEquals(((List)e.getValue()).get(0), "password hint is required"); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -