| /* | |
| * Copyright 2010 Google Inc. | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not | |
| * use this file except in compliance with the License. You may obtain a copy of | |
| * the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | |
| * License for the specific language governing permissions and limitations under | |
| * the License. | |
| */ | |
| package com.google.gwt.validation.example.client; | |
| import com.google.gwt.junit.client.GWTTestCase; | |
| import com.google.gwt.validation.example.client.ExampleValidatorFactory.ClientGroup; | |
| import com.google.gwt.validation.example.client.ExampleValidatorFactory.ServerGroup; | |
| import java.util.ArrayList; | |
| import java.util.Arrays; | |
| import java.util.List; | |
| import java.util.Set; | |
| import javax.validation.ConstraintViolation; | |
| import javax.validation.Validation; | |
| import javax.validation.Validator; | |
| import javax.validation.groups.Default; | |
| /** | |
| * Tests for {@link Author}. | |
| */ | |
| public class AuthorTest extends GWTTestCase { | |
| private Author author; | |
| private Validator validator; | |
| @Override | |
| public String getModuleName() { | |
| return "com.google.gwt.validation.example.ValidationExample"; | |
| } | |
| public void testGroup_clientGroup() throws Exception { | |
| initValidAuthor(); | |
| Set<ConstraintViolation<Author>> violations = validator.validate(author, | |
| ClientGroup.class); | |
| assertContentsAnyOrder("valid author", violations); | |
| } | |
| public void testGroup_default() throws Exception { | |
| initValidAuthor(); | |
| Set<ConstraintViolation<Author>> violations = validator.validate(author, | |
| Default.class); | |
| assertContentsAnyOrder("valid author", violations); | |
| } | |
| public void testGroup_empty() throws Exception { | |
| initValidAuthor(); | |
| Set<ConstraintViolation<Author>> violations = validator.validate(author); | |
| assertContentsAnyOrder("valid author", violations); | |
| } | |
| public void testGroup_serverGroup() throws Exception { | |
| initValidAuthor(); | |
| try { | |
| validator.validate(author, ServerGroup.class); | |
| fail("Expected a " + IllegalArgumentException.class); | |
| } catch (IllegalArgumentException e) { | |
| // expected | |
| } | |
| } | |
| public void testValidate_companySize31() { | |
| initValidAuthor(); | |
| author.setCompany("1234567890123456789012345678901"); | |
| Set<ConstraintViolation<Author>> violations = validator.validate(author); | |
| assertContentsAnyOrder("company size 31", toMessage(violations), | |
| "size must be between 0 and 30" | |
| ); | |
| } | |
| public void testValidate_string() { | |
| try { | |
| validator.validate("some string"); | |
| fail("Expected a " + IllegalArgumentException.class); | |
| } catch (IllegalArgumentException expected) { | |
| } | |
| } | |
| public void testValidate_valid() { | |
| initValidAuthor(); | |
| Set<ConstraintViolation<Author>> violations = validator.validate(author); | |
| assertContentsAnyOrder("valid author", violations); | |
| } | |
| public void testValidateProperty_object() { | |
| try { | |
| validator.validateProperty(new Object(), "foo"); | |
| fail("Expected a " + IllegalArgumentException.class); | |
| } catch (IllegalArgumentException expected) { | |
| } | |
| } | |
| public void testValidateValue_string() { | |
| try { | |
| validator.validateValue(String.class, "notValid", "value"); | |
| fail("Expected a " + IllegalArgumentException.class); | |
| } catch (IllegalArgumentException expected) { | |
| } | |
| } | |
| @Override | |
| protected final void gwtSetUp() throws Exception { | |
| super.gwtSetUp(); | |
| author = new Author(); | |
| validator = Validation.buildDefaultValidatorFactory().getValidator(); | |
| } | |
| protected void initValidAuthor() { | |
| author.setFirstName("John"); | |
| author.setLastName("Smith"); | |
| author.setCompany("Google"); | |
| } | |
| private <T> void assertContentsAnyOrder(String message, | |
| Iterable<T> actual, T... expected) { | |
| List<T> expectedList = new ArrayList<T>(Arrays.asList(expected)); | |
| message += "Expected to find " + expectedList + " but found " + actual; | |
| for (T a : actual) { | |
| if (expectedList.contains(a)) { | |
| expectedList.remove(a); | |
| } else { | |
| fail(message); | |
| } | |
| } | |
| if (!expectedList.isEmpty()) { | |
| fail(message); | |
| } | |
| } | |
| private <T> List<String> toMessage(Set<ConstraintViolation<T>> violations) { | |
| List<String> messages = new ArrayList<String>(); | |
| for (ConstraintViolation<T> violation : violations) { | |
| messages.add(violation.getMessage()); | |
| } | |
| return messages; | |
| } | |
| } |