BAEL-2805: Added unit test cases (#6728)

* BAEL-2805: Added unit test cases

* BAEL-2805: Added a property annotated with @Column and @Size

* BAEL-2805: Moved the examples from hibernate5 to hibernate-mapping
This commit is contained in:
PranayVJain 2019-04-30 11:09:34 +05:30 committed by Josh Cummings
parent 6e4c34d774
commit 88ff2a56ac
4 changed files with 167 additions and 1 deletions

View File

@ -31,6 +31,22 @@
<artifactId>h2</artifactId>
<version>${h2database.version}</version>
</dependency>
<!-- validation -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>${hibernate-validator.version}</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>${javax.el-api.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>${org.glassfish.javax.el.version}</version>
</dependency>
</dependencies>
<build>
@ -47,6 +63,9 @@
<hibernate.version>5.3.7.Final</hibernate.version>
<h2database.version>1.4.196</h2database.version>
<assertj-core.version>3.8.0</assertj-core.version>
<hibernate-validator.version>5.3.3.Final</hibernate-validator.version>
<javax.el-api.version>2.2.5</javax.el-api.version>
<org.glassfish.javax.el.version>3.0.1-b08</org.glassfish.javax.el.version>
</properties>
</project>

View File

@ -9,7 +9,7 @@ public enum Strategy {
//See that the classes belongs to different packages
MAP_KEY_COLUMN_BASED(Collections.singletonList(com.baeldung.hibernate.persistmaps.mapkeycolumn.Order.class)),
MAP_KEY_BASED(Arrays.asList(com.baeldung.hibernate.persistmaps.mapkey.Item.class,
com.baeldung.hibernate.persistmaps.mapkey.Order.class)),
com.baeldung.hibernate.persistmaps.mapkey.Order.class,com.baeldung.hibernate.persistmaps.mapkey.User.class)),
MAP_KEY_JOIN_COLUMN_BASED(Arrays.asList(com.baeldung.hibernate.persistmaps.mapkeyjoincolumn.Seller.class,
com.baeldung.hibernate.persistmaps.mapkeyjoincolumn.Item.class,
com.baeldung.hibernate.persistmaps.mapkeyjoincolumn.Order.class)),

View File

@ -0,0 +1,66 @@
package com.baeldung.hibernate.persistmaps.mapkey;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.Length;
@Entity
public class User {
@Id
@Column(length = 3)
private String firstName;
@Size(min = 3, max = 15)
private String middleName;
@Length(min = 3, max = 15)
private String lastName;
@Column(length = 5)
@Size(min = 3, max = 5)
private String city;
public User(String firstName, String middleName, String lastName, String city) {
super();
this.firstName = firstName;
this.middleName = middleName;
this.lastName = lastName;
this.city = city;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getMiddleName() {
return middleName;
}
public void setMiddleName(String middletName) {
this.middleName = middletName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}

View File

@ -0,0 +1,81 @@
package com.baeldung.hibernate.validation;
import static org.junit.Assert.assertEquals;
import java.util.Set;
import javax.persistence.PersistenceException;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import com.baeldung.hibernate.HibernateUtil;
import com.baeldung.hibernate.Strategy;
import com.baeldung.hibernate.persistmaps.mapkey.User;
public class UserValidationUnitTest {
private static Validator validator;
private static SessionFactory sessionFactory;
private Session session;
private Set<ConstraintViolation<User>> constraintViolations;
@BeforeClass
public static void before() {
ValidatorFactory config = Validation.buildDefaultValidatorFactory();
validator = config.getValidator();
sessionFactory = HibernateUtil.getSessionFactory(Strategy.MAP_KEY_BASED);
}
@Before
public void setUp() {
session = sessionFactory.openSession();
session.beginTransaction();
}
@Test
public void whenValidationWithSizeAndInvalidMiddleName_thenConstraintViolation() {
User user = new User("john", "m", "butler", "japan");
constraintViolations = validator.validateProperty(user, "middleName");
assertEquals(constraintViolations.size(), 1);
}
@Test
public void whenValidationWithSizeAndValidMiddleName_thenNoConstraintViolation() {
User user = new User("john", "mathis", "butler", "japan");
constraintViolations = validator.validateProperty(user, "middleName");
assertEquals(constraintViolations.size(), 0);
}
@Test
public void whenValidationWithLengthAndInvalidLastName_thenConstraintViolation() {
User user = new User("john", "m", "b", "japan");
constraintViolations = validator.validateProperty(user, "lastName");
assertEquals(constraintViolations.size(), 1);
}
@Test
public void whenValidationWithLengthAndValidLastName_thenNoConstraintViolation() {
User user = new User("john", "mathis", "butler", "japan");
constraintViolations = validator.validateProperty(user, "lastName");
assertEquals(constraintViolations.size(), 0);
}
@Test(expected = PersistenceException.class)
public void whenSavingFirstNameWithInvalidFirstName_thenPersistenceException() {
User user = new User("john", "mathis", "butler", "japan");
session.save(user);
session.getTransaction()
.commit();
}
@Test
public void whenValidationWithSizeAndColumnWithValidCity_thenNoConstraintViolation() {
User user = new User("john", "mathis", "butler", "japan");
constraintViolations = validator.validateProperty(user, "city");
assertEquals(constraintViolations.size(), 0);
}
}