|
34 | 34 | import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
|
35 | 35 | import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
36 | 36 | import org.springframework.boot.validation.beanvalidation.MethodValidationExcludeFilter;
|
37 |
| -import org.springframework.context.annotation.AnnotationConfigApplicationContext; |
38 | 37 | import org.springframework.context.annotation.Bean;
|
39 | 38 | import org.springframework.context.annotation.Configuration;
|
40 | 39 | import org.springframework.context.annotation.Primary;
|
|
58 | 57 | */
|
59 | 58 | class ValidationAutoConfigurationTests {
|
60 | 59 |
|
61 |
| - private final ApplicationContextRunner contextRunner = new ApplicationContextRunner( |
62 |
| - AnnotationConfigApplicationContext::new) |
63 |
| - .withConfiguration(AutoConfigurations.of(ValidationAutoConfiguration.class)); |
| 60 | + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() |
| 61 | + .withConfiguration(AutoConfigurations.of(ValidationAutoConfiguration.class)); |
64 | 62 |
|
65 | 63 | @Test
|
66 | 64 | void validationAutoConfigurationShouldConfigureDefaultValidator() {
|
@@ -224,6 +222,20 @@ void methodValidationPostProcessorValidatorDependencyDoesNotTriggerEarlyInitiali
|
224 | 222 | .contains("someService"));
|
225 | 223 | }
|
226 | 224 |
|
| 225 | + @Test |
| 226 | + void validationIsEnabledInChildContext() { |
| 227 | + this.contextRunner.run((parent) -> new ApplicationContextRunner() |
| 228 | + .withConfiguration(AutoConfigurations.of(ValidationAutoConfiguration.class)) |
| 229 | + .withUserConfiguration(SampleService.class).withParent(parent).run((context) -> { |
| 230 | + assertThat(context.getBeansOfType(Validator.class)).hasSize(0); |
| 231 | + assertThat(parent.getBeansOfType(Validator.class)).hasSize(1); |
| 232 | + SampleService service = context.getBean(SampleService.class); |
| 233 | + service.doSomething("Valid"); |
| 234 | + assertThatExceptionOfType(ConstraintViolationException.class) |
| 235 | + .isThrownBy(() -> service.doSomething("KO")); |
| 236 | + })); |
| 237 | + } |
| 238 | + |
227 | 239 | private boolean isPrimaryBean(AssertableApplicationContext context, String beanName) {
|
228 | 240 | return ((BeanDefinitionRegistry) context.getSourceApplicationContext()).getBeanDefinition(beanName).isPrimary();
|
229 | 241 | }
|
|
0 commit comments