// Path: src/test/java/ru/vyarus/guice/validator/customtype/ComplexBean.java
// @ComplexBeanValid
// public class ComplexBean {
// 
//     @NotNull
//     private String user;
//     private int value;
// 
//     public ComplexBean() {
//     }
// 
//     public ComplexBean(String user, int value) {
//         this.user = user;
//         this.value = value;
//     }
// 
//     public String getUser() {
//         return user;
//     }
// 
//     public void setUser(String user) {
//         this.user = user;
//     }
// 
//     public int getValue() {
//         return value;
//     }
// 
//     public void setValue(int value) {
//         this.value = value;
//     }
// }
// 
// Path: src/test/java/ru/vyarus/guice/validator/customtype/CustomService.java
// @Singleton
// public class CustomService {
// 
//     public String getRequiredValue() {
//         return "perfect";
//     }
// 
//     /* @Valid will trigger bean validation with includes entire bean validation. */
//     @ValidateOnExecution
//     public void doAction(@Valid ComplexBean bean) {
//     }
// }
// 
// Path: src/test/java/ru/vyarus/guice/validator/simple/SimpleBean.java
// public class SimpleBean {
// 
//     @NotBlank
//     private String name;
//     @NotNull
//     private Integer value;
// 
//     public SimpleBean() {
//     }
// 
//     public SimpleBean(String name, Integer value) {
//         this.name = name;
//         this.value = value;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public Integer getValue() {
//         return value;
//     }
// 
//     public void setValue(Integer value) {
//         this.value = value;
//     }
// }
// 
// Path: src/test/java/ru/vyarus/guice/validator/simple/SimpleService.java
// @Singleton
// @ValidateOnExecution // enables validation for all methods
// public class SimpleService {
// 
//     public SimpleBean beanRequired(@NotNull SimpleBean bean) {
//         return null;
//     }
// 
//     public SimpleBean validBeanRequired(@NotNull @Valid SimpleBean bean) {
//         return null;
//     }
// 
//     @NotNull
//     public SimpleBean notNullReturn(SimpleBean bean) {
//         return bean;
//     }
// 
//     @NotNull
//     @Valid
//     public SimpleBean validReturn(SimpleBean bean) {
//         return bean;
//     }
// }


import com.google.inject.Guice;
import org.junit.Test;
import ru.vyarus.guice.validator.customtype.ComplexBean;
import ru.vyarus.guice.validator.customtype.CustomService;
import ru.vyarus.guice.validator.simple.SimpleBean;
import ru.vyarus.guice.validator.simple.SimpleService;
import jakarta.validation.ConstraintViolationException;
import jakarta.validation.Validation;
import jakarta.validation.ValidatorFactory;
package ru.vyarus.guice.validator;



/**
 * @author Vyacheslav Rusakov
 * @since 19.12.2014
 */
public class CustomValidatorFactoryTest {

    @Test(expected = ConstraintViolationException.class)
    public void testExplicitCustomFactory() throws Exception {
        Guice.createInjector(new ValidationModule(Validation.buildDefaultValidatorFactory()).validateAnnotatedOnly())
                .getInstance(SimpleService.class)
                .validReturn(new SimpleBean());
    }

    @Test(expected = ConstraintViolationException.class)
    public void testImplicitCustomFactory() throws Exception {
        Guice.createInjector(new ValidationModule(Validation.buildDefaultValidatorFactory()))
                .getInstance(SimpleService.class)
// Path: src/test/java/ru/vyarus/guice/validator/customtype/ComplexBean.java
// @ComplexBeanValid
// public class ComplexBean {
// 
//     @NotNull
//     private String user;
//     private int value;
// 
//     public ComplexBean() {
//     }
// 
//     public ComplexBean(String user, int value) {
//         this.user = user;
//         this.value = value;
//     }
// 
//     public String getUser() {
//         return user;
//     }
// 
//     public void setUser(String user) {
//         this.user = user;
//     }
// 
//     public int getValue() {
//         return value;
//     }
// 
//     public void setValue(int value) {
//         this.value = value;
//     }
// }
// 
// Path: src/test/java/ru/vyarus/guice/validator/customtype/CustomService.java
// @Singleton
// public class CustomService {
// 
//     public String getRequiredValue() {
//         return "perfect";
//     }
// 
//     /* @Valid will trigger bean validation with includes entire bean validation. */
//     @ValidateOnExecution
//     public void doAction(@Valid ComplexBean bean) {
//     }
// }
// 
// Path: src/test/java/ru/vyarus/guice/validator/simple/SimpleBean.java
// public class SimpleBean {
// 
//     @NotBlank
//     private String name;
//     @NotNull
//     private Integer value;
// 
//     public SimpleBean() {
//     }
// 
//     public SimpleBean(String name, Integer value) {
//         this.name = name;
//         this.value = value;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public Integer getValue() {
//         return value;
//     }
// 
//     public void setValue(Integer value) {
//         this.value = value;
//     }
// }
// 
// Path: src/test/java/ru/vyarus/guice/validator/simple/SimpleService.java
// @Singleton
// @ValidateOnExecution // enables validation for all methods
// public class SimpleService {
// 
//     public SimpleBean beanRequired(@NotNull SimpleBean bean) {
//         return null;
//     }
// 
//     public SimpleBean validBeanRequired(@NotNull @Valid SimpleBean bean) {
//         return null;
//     }
// 
//     @NotNull
//     public SimpleBean notNullReturn(SimpleBean bean) {
//         return bean;
//     }
// 
//     @NotNull
//     @Valid
//     public SimpleBean validReturn(SimpleBean bean) {
//         return bean;
//     }
// }


// Path: src/test/java/ru/vyarus/guice/validator/CustomValidatorFactoryTest.java
import com.google.inject.Guice;
import org.junit.Test;
import ru.vyarus.guice.validator.customtype.ComplexBean;
import ru.vyarus.guice.validator.customtype.CustomService;
import ru.vyarus.guice.validator.simple.SimpleBean;
import ru.vyarus.guice.validator.simple.SimpleService;
import jakarta.validation.ConstraintViolationException;
import jakarta.validation.Validation;
import jakarta.validation.ValidatorFactory;

package ru.vyarus.guice.validator;



/**
 * @author Vyacheslav Rusakov
 * @since 19.12.2014
 */
public class CustomValidatorFactoryTest {

    @Test(expected = ConstraintViolationException.class)
    public void testExplicitCustomFactory() throws Exception {
        Guice.createInjector(new ValidationModule(Validation.buildDefaultValidatorFactory()).validateAnnotatedOnly())
                .getInstance(SimpleService.class)
                .validReturn(new SimpleBean());
    }

    @Test(expected = ConstraintViolationException.class)
    public void testImplicitCustomFactory() throws Exception {
        Guice.createInjector(new ValidationModule(Validation.buildDefaultValidatorFactory()))
                .getInstance(SimpleService.class)
                .validReturn(new SimpleBean());