Próbuję przetestować czy działa walidacja argumentów konstruktora w Encji.
Zrobiłem chyba wszystko jak napisane w poradniku hibernate: //http://hibernate.org/validator/documentation/getting-started/
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import org.junit.Before;
import org.junit.Test;
public class AddressTest {
private static Validator validator;
@Before
public void setUp() {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
}
@Test
public void testAddressStringStringStringString() {
// when
Address address = new Address("Wielka WARSZAAAAAAWA", "Karabeli", "1/1", "000-000");
Set<ConstraintViolation<Address>> violations = validator.validate(address);
// then
assertTrue(violations.isEmpty());
assertEquals("000-000", address.getPostalCode());
}
//http://hibernate.org/validator/documentation/getting-started/
}
.
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.validation.constraints.Pattern;
import org.springframework.validation.annotation.Validated;
@Validated
@Entity
public class Address {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String city;
private String street;
private String houseNumberEtc;
@Pattern(regexp = "\\d+{2}-\\d+{3}")
private String postalCode;
public Address() {
}
public Address(String city, String street, String houseNumberEtc, @Pattern(regexp = "\\d+{2}-\\d+{3}") String postalCode) {
this.city = city;
this.street = street;
this.houseNumberEtc = houseNumberEtc;
this.postalCode = postalCode;
}
public Long getId() {
return id;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getHouseNumberEtc() {
return houseNumberEtc;
}
public void setHouseNumberEtc(String houseNumberEtc) {
this.houseNumberEtc = houseNumberEtc;
}
public String getPostalCode() {
return postalCode;
}
public void setPostalCode(String postalCode) {
this.postalCode = postalCode;
}
@Override
public String toString() {
return "Address [" + city + street + houseNumberEtc + postalCode + "]";
}
}
Test jednostkowy przechodzi a nie powinien, bo kod pocztowy jest zły.
Wywala się tylko jak próbuję zapisać adres z błędnym kodem do bazy.
Co robię źle?