1717
1818import static org .assertj .core .api .Assertions .assertThat ;
1919import static org .junit .jupiter .api .Assertions .assertNotSame ;
20- import static org .mockito .Mockito .RETURNS_MOCKS ;
2120
21+ import feign .codec .Decoder ;
22+ import feign .codec .Encoder ;
23+ import feign .codec .ErrorDecoder ;
2224import java .lang .reflect .Field ;
2325import java .util .List ;
2426import org .junit .jupiter .api .Test ;
@@ -36,9 +38,20 @@ void checkEnrichTouchesAllAsyncBuilderFields()
3638 14 );
3739 }
3840
41+ @ Test
42+ void checkEnrichTouchesAllBuilderFields ()
43+ throws IllegalArgumentException , IllegalAccessException {
44+ test (
45+ Feign .builder ()
46+ .requestInterceptor (template -> {})
47+ .responseInterceptor ((ic , c ) -> c .next (ic )),
48+ 12 );
49+ }
50+
3951 private void test (BaseBuilder <?, ?> builder , int expectedFieldsCount )
4052 throws IllegalArgumentException , IllegalAccessException {
41- Capability mockingCapability = Mockito .mock (Capability .class , RETURNS_MOCKS );
53+ Capability mockingCapability = new MockingCapability ();
54+
4255 BaseBuilder <?, ?> enriched = builder .addCapability (mockingCapability ).enrich ();
4356
4457 List <Field > fields = enriched .getFieldsToEnrich ();
@@ -58,13 +71,98 @@ private void test(BaseBuilder<?, ?> builder, int expectedFieldsCount)
5871 }
5972 }
6073
61- @ Test
62- void checkEnrichTouchesAllBuilderFields ()
63- throws IllegalArgumentException , IllegalAccessException {
64- test (
65- Feign .builder ()
66- .requestInterceptor (template -> {})
67- .responseInterceptor ((ic , c ) -> c .next (ic )),
68- 12 );
74+ private final class MockingCapability implements Capability {
75+
76+ @ Override
77+ @ SuppressWarnings ("unchecked" )
78+ public <C > AsyncContextSupplier <C > enrich (AsyncContextSupplier <C > asyncContextSupplier ) {
79+ return (AsyncContextSupplier <C >) Mockito .mock (AsyncContextSupplier .class );
80+ }
81+
82+ @ Override
83+ public AsyncResponseHandler enrich (AsyncResponseHandler asyncResponseHandler ) {
84+ return Mockito .mock (AsyncResponseHandler .class );
85+ }
86+
87+ @ Override
88+ public ResponseInterceptor .Chain enrich (ResponseInterceptor .Chain chain ) {
89+ return Mockito .mock (ResponseInterceptor .Chain .class );
90+ }
91+
92+ @ Override
93+ @ SuppressWarnings ("unchecked" )
94+ public AsyncClient <Object > enrich (AsyncClient <Object > client ) {
95+ return (AsyncClient <Object >) Mockito .mock (AsyncClient .class );
96+ }
97+
98+ @ Override
99+ public Client enrich (Client client ) {
100+ return Mockito .mock (Client .class );
101+ }
102+
103+ @ Override
104+ public Contract enrich (Contract contract ) {
105+ return Mockito .mock (Contract .class );
106+ }
107+
108+ @ Override
109+ public Decoder enrich (Decoder decoder ) {
110+ return Mockito .mock (Decoder .class );
111+ }
112+
113+ @ Override
114+ public ErrorDecoder enrich (ErrorDecoder decoder ) {
115+ return Mockito .mock (ErrorDecoder .class );
116+ }
117+
118+ @ Override
119+ public Encoder enrich (Encoder encoder ) {
120+ return Mockito .mock (Encoder .class );
121+ }
122+
123+ @ Override
124+ public InvocationHandlerFactory enrich (InvocationHandlerFactory invocationHandlerFactory ) {
125+ return Mockito .mock (InvocationHandlerFactory .class );
126+ }
127+
128+ @ Override
129+ public Logger .Level enrich (Logger .Level level ) {
130+ return Mockito .mock (Logger .Level .class );
131+ }
132+
133+ @ Override
134+ public Logger enrich (Logger logger ) {
135+ return Mockito .mock (Logger .class );
136+ }
137+
138+ @ Override
139+ public MethodInfoResolver enrich (MethodInfoResolver methodInfoResolver ) {
140+ return Mockito .mock (MethodInfoResolver .class );
141+ }
142+
143+ @ Override
144+ public Request .Options enrich (Request .Options options ) {
145+ return Mockito .mock (Request .Options .class );
146+ }
147+
148+ @ Override
149+ public QueryMapEncoder enrich (QueryMapEncoder queryMapEncoder ) {
150+ return Mockito .mock (QueryMapEncoder .class );
151+ }
152+
153+ @ Override
154+ public RequestInterceptor enrich (RequestInterceptor requestInterceptor ) {
155+ return Mockito .mock (RequestInterceptor .class );
156+ }
157+
158+ @ Override
159+ public ResponseInterceptor enrich (ResponseInterceptor responseInterceptor ) {
160+ return Mockito .mock (ResponseInterceptor .class );
161+ }
162+
163+ @ Override
164+ public Retryer enrich (Retryer retryer ) {
165+ return Mockito .mock (Retryer .class );
166+ }
69167 }
70168}
0 commit comments