From 10eec1f7dc33201d644e2945ddfdd569aedbd275 Mon Sep 17 00:00:00 2001 From: Guillaume Smet Date: Wed, 14 Jun 2017 09:57:50 +0200 Subject: [PATCH] BVTCK-155 Add a test for @OverridesAttribute default name() --- .../ConstraintCompositionTest.java | 34 ++++++++++++++ ...codeWithDefaultOverridesAttributeName.java | 44 +++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 tests/src/main/java/org/hibernate/beanvalidation/tck/tests/constraints/constraintcomposition/FrenchZipcodeWithDefaultOverridesAttributeName.java diff --git a/tests/src/main/java/org/hibernate/beanvalidation/tck/tests/constraints/constraintcomposition/ConstraintCompositionTest.java b/tests/src/main/java/org/hibernate/beanvalidation/tck/tests/constraints/constraintcomposition/ConstraintCompositionTest.java index 98eb906f..ee3f6b18 100644 --- a/tests/src/main/java/org/hibernate/beanvalidation/tck/tests/constraints/constraintcomposition/ConstraintCompositionTest.java +++ b/tests/src/main/java/org/hibernate/beanvalidation/tck/tests/constraints/constraintcomposition/ConstraintCompositionTest.java @@ -10,7 +10,9 @@ import static org.hibernate.beanvalidation.tck.util.ConstraintViolationAssert.assertCorrectConstraintTypes; import static org.hibernate.beanvalidation.tck.util.ConstraintViolationAssert.assertCorrectConstraintViolationMessages; import static org.hibernate.beanvalidation.tck.util.ConstraintViolationAssert.assertNumberOfViolations; +import static org.hibernate.beanvalidation.tck.util.ConstraintViolationAssert.assertThat; import static org.hibernate.beanvalidation.tck.util.ConstraintViolationAssert.pathWith; +import static org.hibernate.beanvalidation.tck.util.ConstraintViolationAssert.violationOf; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; @@ -333,6 +335,20 @@ public void testMixedConstraintTargetsInComposingConstraintsCauseException() thr ); } + @Test + @SpecAssertion(section = Sections.CONSTRAINTSDEFINITIONIMPLEMENTATION_CONSTRAINTCOMPOSITION, id = "o") + public void testOverridesAttributeWithDefaultName() { + Set> constraintViolations = getValidator().validate( DummyEntityWithDefaultAttributeName.valid() ); + assertNumberOfViolations( constraintViolations, 0 ); + + constraintViolations = getValidator().validate( DummyEntityWithDefaultAttributeName.invalid() ); + assertThat(constraintViolations).containsOnlyViolations( + violationOf( Pattern.class ) + .withProperty( "zip" ) + .withMessage( "Wrong zip code" ) + ); + } + private FrenchAddress getFrenchAddressWithoutZipCode() { FrenchAddress address = new FrenchAddress(); address.setAddressline1( "10 rue des Treuils" ); @@ -385,4 +401,22 @@ private static class DummyEntityWithAnotherIllegallyComposedConstraint { public void doSomething(int i) { } } + + private static class DummyEntityWithDefaultAttributeName { + + @FrenchZipcodeWithDefaultOverridesAttributeName + private String zip; + + private static DummyEntityWithDefaultAttributeName valid() { + DummyEntityWithDefaultAttributeName entity = new DummyEntityWithDefaultAttributeName(); + entity.zip = "69007"; + return entity; + } + + private static DummyEntityWithDefaultAttributeName invalid() { + DummyEntityWithDefaultAttributeName entity = new DummyEntityWithDefaultAttributeName(); + entity.zip = "invalid"; + return entity; + } + } } diff --git a/tests/src/main/java/org/hibernate/beanvalidation/tck/tests/constraints/constraintcomposition/FrenchZipcodeWithDefaultOverridesAttributeName.java b/tests/src/main/java/org/hibernate/beanvalidation/tck/tests/constraints/constraintcomposition/FrenchZipcodeWithDefaultOverridesAttributeName.java new file mode 100644 index 00000000..0b9b83cd --- /dev/null +++ b/tests/src/main/java/org/hibernate/beanvalidation/tck/tests/constraints/constraintcomposition/FrenchZipcodeWithDefaultOverridesAttributeName.java @@ -0,0 +1,44 @@ +/** + * Bean Validation TCK + * + * License: Apache License, Version 2.0 + * See the license.txt file in the root directory or . + */ +package org.hibernate.beanvalidation.tck.tests.constraints.constraintcomposition; + +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import javax.validation.Constraint; +import javax.validation.OverridesAttribute; +import javax.validation.Payload; +import javax.validation.constraints.Pattern; + + +/** + * @author Guillaume Smet + */ +@NotEmpty +@Pattern(regexp = "bar") +@Constraint(validatedBy = {}) +@Documented +@Target({ METHOD, FIELD, TYPE }) +@Retention(RUNTIME) +public @interface FrenchZipcodeWithDefaultOverridesAttributeName { + + @OverridesAttribute(constraint = Pattern.class) + String message() default "Wrong zip code"; + + Class[] groups() default { }; + + Class[] payload() default {}; + + @OverridesAttribute(constraint = Pattern.class) + String regexp() default "\\d*"; +}