Added a html-controller, that renders the fetched data
[demos/testing] / src / test / java / de / juplo / demo / HtmlControllerTest.java
1 package de.juplo.demo;
2
3
4 import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
5 import org.junit.jupiter.api.BeforeEach;
6 import org.junit.jupiter.api.Test;
7 import org.junit.jupiter.api.extension.ExtendWith;
8 import org.mockito.Mockito;
9 import static org.mockito.Mockito.verify;
10 import static org.mockito.Mockito.when;
11 import org.springframework.boot.test.mock.mockito.MockBean;
12 import org.springframework.test.context.junit.jupiter.SpringExtension;
13 import org.springframework.ui.Model;
14 import reactor.core.publisher.Mono;
15
16
17 /**
18  * Unit-Test for class {@link RemoteContentHtmlController}.
19  * @author Kai Moritz
20  */
21 @ExtendWith(SpringExtension.class)
22 public class HtmlControllerTest
23 {
24   HtmlController controller;
25
26   @MockBean
27   RemoteContentService service;
28   @MockBean
29   Model model;
30
31
32   @BeforeEach
33   void setUp()
34   {
35     service = Mockito.mock(RemoteContentService.class);
36     controller = new HtmlController(service);
37   }
38
39
40   @Test
41   void test()
42   {
43     Mono<String> mono = Mono.empty();
44     when(service.getRemoteText("foo")).thenReturn(mono);
45
46     // when
47     String result = controller.fetch(model, "foo");
48
49     assertThat(result).isEqualTo("layout");
50     verify(model).addAttribute("text", mono);
51   }
52 }