Skip to content

Commit 8f30639

Browse files
committed
Test status quo for Ordered support for @ControllerAdvice beans
See gh-23163
1 parent e2d01bb commit 8f30639

File tree

1 file changed

+39
-3
lines changed

1 file changed

+39
-3
lines changed

spring-web/src/test/java/org/springframework/web/method/ControllerAdviceBeanTests.java

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
3333
import static org.mockito.BDDMockito.given;
3434
import static org.mockito.Mockito.mock;
35+
import static org.mockito.Mockito.times;
36+
import static org.mockito.Mockito.verify;
3537

3638
/**
3739
* Unit tests for {@link ControllerAdviceBean}.
@@ -89,22 +91,39 @@ public String toString() {
8991
assertEqualsHashCodeAndToString(bean1, bean2, toString);
9092
}
9193

94+
@Test
95+
public void orderedWithLowestPrecedenceByDefaultForBeanName() {
96+
assertOrder(SimpleControllerAdvice.class, Ordered.LOWEST_PRECEDENCE);
97+
}
98+
9299
@Test
93100
public void orderedWithLowestPrecedenceByDefaultForBeanInstance() {
94101
assertOrder(new SimpleControllerAdvice(), Ordered.LOWEST_PRECEDENCE);
95102
}
96103

97104
@Test
98-
public void orderedViaAnnotationForBeanInstance() {
99-
assertOrder(new OrderAnnotationControllerAdvice(), 42);
100-
assertOrder(new PriorityAnnotationControllerAdvice(), 42);
105+
public void orderedViaOrderedInterfaceForBeanName() {
106+
// TODO Change expectedOrder once Ordered is properly supported
107+
assertOrder(OrderedControllerAdvice.class, Ordered.LOWEST_PRECEDENCE);
101108
}
102109

103110
@Test
104111
public void orderedViaOrderedInterfaceForBeanInstance() {
105112
assertOrder(new OrderedControllerAdvice(), 42);
106113
}
107114

115+
@Test
116+
public void orderedViaAnnotationForBeanName() {
117+
assertOrder(OrderAnnotationControllerAdvice.class, 42);
118+
assertOrder(PriorityAnnotationControllerAdvice.class, 42);
119+
}
120+
121+
@Test
122+
public void orderedViaAnnotationForBeanInstance() {
123+
assertOrder(new OrderAnnotationControllerAdvice(), 42);
124+
assertOrder(new PriorityAnnotationControllerAdvice(), 42);
125+
}
126+
108127
@Test
109128
public void shouldMatchAll() {
110129
ControllerAdviceBean bean = new ControllerAdviceBean(new SimpleControllerAdvice());
@@ -186,6 +205,23 @@ private void assertOrder(Object bean, int expectedOrder) {
186205
assertThat(new ControllerAdviceBean(bean).getOrder()).isEqualTo(expectedOrder);
187206
}
188207

208+
@SuppressWarnings({ "unchecked", "rawtypes" })
209+
private void assertOrder(Class beanType, int expectedOrder) {
210+
String beanName = "myBean";
211+
BeanFactory beanFactory = mock(BeanFactory.class);
212+
given(beanFactory.containsBean(beanName)).willReturn(true);
213+
given(beanFactory.getType(beanName)).willReturn(beanType);
214+
215+
ControllerAdviceBean controllerAdviceBean = new ControllerAdviceBean(beanName, beanFactory);
216+
217+
assertThat(controllerAdviceBean.getOrder()).isEqualTo(expectedOrder);
218+
verify(beanFactory).containsBean(beanName);
219+
verify(beanFactory).getType(beanName);
220+
// Expecting 0 invocations of getBean() since Ordered is not yet supported.
221+
// TODO Change expected number of invocations once Ordered is properly supported
222+
verify(beanFactory, times(0)).getBean(beanName);
223+
}
224+
189225
private void assertApplicable(String message, ControllerAdviceBean controllerAdvice, Class<?> controllerBeanType) {
190226
assertThat(controllerAdvice).isNotNull();
191227
assertThat(controllerAdvice.isApplicableToBeanType(controllerBeanType)).as(message).isTrue();

0 commit comments

Comments
 (0)