40a85b52702e74a03fdefee6f62a025b4530538c
[demos/testing] / src / test / java / de / juplo / demo / RemoteContentServiceTest.java
1 package de.juplo.demo;
2
3
4 import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
5 import org.junit.jupiter.api.Test;
6 import org.junit.jupiter.api.extension.ExtendWith;
7 import static org.mockito.ArgumentMatchers.eq;
8 import static org.mockito.Mockito.when;
9 import org.mockito.junit.jupiter.MockitoExtension;
10 import org.springframework.boot.test.mock.mockito.MockBean;
11 import org.springframework.web.reactive.function.client.WebClient;
12 import org.springframework.web.reactive.function.client.WebClient.RequestHeadersSpec;
13 import org.springframework.web.reactive.function.client.WebClient.RequestHeadersUriSpec;
14 import org.springframework.web.reactive.function.client.WebClient.ResponseSpec;
15 import reactor.core.publisher.Mono;
16
17
18 /**
19  * Unit-Test for class {@link RemoteContentService}.
20  * @author Kai Moritz
21  */
22 @ExtendWith(MockitoExtension.class)
23 public class RemoteContentServiceTest
24 {
25   RemoteContentService service;
26
27   @MockBean
28   WebClient webClient;
29   @MockBean
30   RequestHeadersUriSpec uriSpec;
31   @MockBean
32   RequestHeadersSpec headersSpec;
33   @MockBean
34   ResponseSpec responseSpec;
35
36
37   @Test
38   void test()
39   {
40     when(webClient.get()).thenReturn(uriSpec);
41     when(uriSpec.uri(eq("/foo"))).thenReturn(headersSpec);
42     when(headersSpec.retrieve()).thenReturn(responseSpec);
43     when(responseSpec.bodyToMono(String.class)).thenReturn(Mono.just("bar"));
44
45     Mono<String> result = service.getRemoteText("/foo");
46
47     assertThat(result).isNotNull();
48     assertThat(result.block()).isEqualTo("bar");
49   }
50 }