4 import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
5 import org.jsoup.Jsoup;
6 import org.jsoup.nodes.Document;
7 import org.junit.jupiter.api.DisplayName;
8 import org.junit.jupiter.api.extension.ExtendWith;
9 import org.junit.jupiter.params.ParameterizedTest;
10 import org.junit.jupiter.params.provider.ValueSource;
11 import static org.mockito.Mockito.verify;
12 import static org.mockito.Mockito.when;
13 import org.springframework.beans.factory.annotation.Autowired;
14 import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest;
15 import org.springframework.boot.test.mock.mockito.MockBean;
16 import org.springframework.test.context.junit.jupiter.SpringExtension;
17 import org.springframework.test.web.reactive.server.WebTestClient;
18 import reactor.core.publisher.Mono;
22 * Narrow Integration-Test for the {@link HtmlController}.
25 @ExtendWith(SpringExtension.class)
27 public class HtmlControllerIT
30 WebTestClient webClient;
32 RemoteContentService service;
35 @DisplayName("Valid mappings for HtmlController with a parameter")
37 @ValueSource(strings = { "/?path=foo", "?path=foo" })
38 void testUriWithParameter(String uri)
40 when(service.getRemoteText("foo")).thenReturn(Mono.just("bar"));
45 .expectStatus().isOk()
46 .expectBody(String.class).value(rendered ->
48 Document doc = Jsoup.parse(rendered);
50 doc.select("html > body > main > div > div > div > pre").text())
53 verify(service).getRemoteText("foo");
56 @DisplayName("Mappings for HtmlController without a parameter")
57 @ParameterizedTest(name = "{arguments} ==> uri={0}")
58 @ValueSource(strings = { "/", "", "?foo=bar", "/?foo=bar"})
59 void testUriWithoutParameter(String uri)
65 .expectStatus().isOk()
66 .expectBody(String.class).value(rendered ->
68 Document doc = Jsoup.parse(rendered);
71 .select("html > body > main > div > div > div > pre")
76 .select("html > body > main > div > div > div > pre")