e45847959a05ba412ee8b945e2238548af17d40c
[demos/testing] / src / test / java / de / juplo / demo / RemoteContentServiceTest.java
1 package de.juplo.demo;
2
3
4 import org.junit.jupiter.api.BeforeEach;
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.springframework.boot.test.mock.mockito.MockBean;
10 import org.springframework.test.context.junit.jupiter.SpringExtension;
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 import reactor.test.StepVerifier;
17
18
19 /**
20  * Unit-Test for class {@link RemoteContentService}.
21  * @author Kai Moritz
22  */
23 @ExtendWith(SpringExtension.class)
24 public class RemoteContentServiceTest
25 {
26   RemoteContentService service;
27
28   @MockBean
29   WebClient webClient;
30   @MockBean(name = "uriSpec")
31   RequestHeadersUriSpec uriSpec;
32   @MockBean(name = "headersSpec")
33   RequestHeadersSpec headersSpec;
34   @MockBean(name = "responseSpec")
35   ResponseSpec responseSpec;
36
37
38   @BeforeEach
39   void setUp()
40   {
41     service = new RemoteContentService(webClient);
42   }
43
44
45   @Test
46   void test()
47   {
48     when(webClient.get()).thenReturn(uriSpec);
49     when(uriSpec.uri(eq("/foo"))).thenReturn(headersSpec);
50     when(headersSpec.retrieve()).thenReturn(responseSpec);
51     when(responseSpec.bodyToMono(String.class)).thenReturn(Mono.just("bar"));
52
53     Mono<String> result = service.getRemoteText("/foo");
54
55     StepVerifier
56         .create(result)
57         .expectNext("bar")
58         .verifyComplete();
59   }
60 }