Skip to content

Commit 09735f5

Browse files
velohosuaby
authored andcommitted
Make sure test runs with mocked instance of capability
1 parent 2ba22de commit 09735f5

File tree

1 file changed

+31
-108
lines changed

1 file changed

+31
-108
lines changed

core/src/test/java/feign/BaseBuilderTest.java

+31-108
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@
1717

1818
import static org.assertj.core.api.Assertions.assertThat;
1919
import static org.junit.jupiter.api.Assertions.assertNotSame;
20+
import static org.mockito.ArgumentMatchers.any;
21+
import static org.mockito.Mockito.RETURNS_MOCKS;
22+
import static org.mockito.Mockito.doAnswer;
23+
import static org.mockito.Mockito.mock;
24+
import static org.mockito.Mockito.verify;
2025

21-
import feign.codec.Decoder;
22-
import feign.codec.Encoder;
23-
import feign.codec.ErrorDecoder;
2426
import java.lang.reflect.Field;
2527
import java.util.List;
2628
import org.junit.jupiter.api.Test;
@@ -31,26 +33,37 @@ class BaseBuilderTest {
3133
@Test
3234
void checkEnrichTouchesAllAsyncBuilderFields()
3335
throws IllegalArgumentException, IllegalAccessException {
34-
test(
35-
AsyncFeign.builder()
36-
.requestInterceptor(template -> {})
37-
.responseInterceptor((ic, c) -> c.next(ic)),
38-
14);
36+
Capability mockingCapability =
37+
test(
38+
AsyncFeign.builder()
39+
.requestInterceptor(template -> {})
40+
.responseInterceptor((ic, c) -> c.next(ic)),
41+
14);
42+
43+
// make sure capability was invoked only once
44+
verify(mockingCapability).enrich(any(AsyncClient.class));
3945
}
4046

4147
@Test
4248
void checkEnrichTouchesAllBuilderFields()
4349
throws IllegalArgumentException, IllegalAccessException {
44-
test(
45-
Feign.builder()
46-
.requestInterceptor(template -> {})
47-
.responseInterceptor((ic, c) -> c.next(ic)),
48-
12);
50+
Capability mockingCapability =
51+
test(
52+
Feign.builder()
53+
.requestInterceptor(template -> {})
54+
.responseInterceptor((ic, c) -> c.next(ic)),
55+
12);
56+
57+
// make sure capability was invoked only once
58+
verify(mockingCapability).enrich(any(Client.class));
4959
}
5060

51-
private void test(BaseBuilder<?, ?> builder, int expectedFieldsCount)
61+
private Capability test(BaseBuilder<?, ?> builder, int expectedFieldsCount)
5262
throws IllegalArgumentException, IllegalAccessException {
53-
Capability mockingCapability = new MockingCapability();
63+
Capability mockingCapability = mock(Capability.class, RETURNS_MOCKS);
64+
doAnswer(inv -> inv.getArgument(0, BaseBuilder.class))
65+
.when(mockingCapability)
66+
.beforeBuild(any(BaseBuilder.class));
5467

5568
BaseBuilder<?, ?> enriched = builder.addCapability(mockingCapability).enrich();
5669

@@ -69,100 +82,10 @@ private void test(BaseBuilder<?, ?> builder, int expectedFieldsCount)
6982
.isTrue();
7083
assertNotSame(builder, enriched);
7184
}
72-
}
73-
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-
}
11785

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-
}
86+
// make sure capability was invoked only once
87+
verify(mockingCapability).beforeBuild(any(BaseBuilder.class));
14288

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-
}
89+
return mockingCapability;
16790
}
16891
}

0 commit comments

Comments
 (0)