/*
* Hibernate Validator, declare and validate application constraints
*
* License: Apache License, Version 2.0
* See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
*/
package org.hibernate.validator.test.internal.xml;
import static org.hibernate.validator.testutils.ValidatorUtil.getConfiguration;
import static org.testng.Assert.assertEquals;
import java.util.Set;
import javax.validation.Validator;
import javax.validation.metadata.BeanDescriptor;
import javax.validation.metadata.ConstraintDescriptor;
import org.assertj.core.api.Assertions;
import org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl;
import org.hibernate.validator.testutil.TestForIssue;
import org.testng.annotations.Test;
/**
* Various tests for parsing of XML mapping files.
*
* @author Guillaume Smet
*/
public class XmlParsingTest {
@Test
@TestForIssue(jiraKey = "HV-1101")
public void xmlConstraintMappingSupportsTabsWithoutNewLines() {
Validator validator = getConfiguration()
.addMapping(
XmlParsingTest.class.getResourceAsStream( "hv-1101-tabs-mapping.xml" ) )
.buildValidatorFactory()
.getValidator();
ConstraintDescriptorImpl<?> descriptor = getSingleConstraintDescriptorForClass( validator, Double.class );
MyConstraint constraint = (MyConstraint) descriptor.getAnnotation();
Assertions.assertThat( constraint.additionalConstraints() ).hasSize( 1 );
Assertions.assertThat( constraint.additionalConstraints()[0].constraint() ).isEqualTo( "AA" );
}
@Test
@TestForIssue(jiraKey = "HV-1101")
public void xmlConstraintMappingSupportsEmptyElementForStrings() {
Validator validator = getConfiguration()
.addMapping(
XmlParsingTest.class.getResourceAsStream( "hv-1101-empty-element-mapping.xml" ) )
.buildValidatorFactory()
.getValidator();
ConstraintDescriptorImpl<?> descriptor = getSingleConstraintDescriptorForClass( validator, Double.class );
MyConstraint constraint = (MyConstraint) descriptor.getAnnotation();
Assertions.assertThat( constraint.additionalConstraints() ).hasSize( 1 );
Assertions.assertThat( constraint.additionalConstraints()[0].constraint() ).isEqualTo( "" );
}
private ConstraintDescriptorImpl<?> getSingleConstraintDescriptorForClass(Validator validator, Class<?> clazz) {
BeanDescriptor beanDescriptor = validator.getConstraintsForClass( clazz );
Set<ConstraintDescriptor<?>> constraintDescriptorSet = beanDescriptor.getConstraintDescriptors();
assertEquals(
constraintDescriptorSet.size(),
1,
"There should be only one constraint descriptor"
);
return (ConstraintDescriptorImpl<?>) constraintDescriptorSet.iterator().next();
}
}