The error-message is reanderd instead of the text, in case of a 404
[demos/testing] / src / test / java / de / juplo / demo / HtmlControllerTest.java
index 1cf7274..aede077 100644 (file)
@@ -13,6 +13,7 @@ import static org.mockito.Mockito.when;
 import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.ui.Model;
+import org.springframework.web.reactive.function.client.WebClientResponseException;
 import reactor.core.publisher.Mono;
 import reactor.test.StepVerifier;
 
@@ -56,4 +57,23 @@ public class HtmlControllerTest
         .expectComplete()
         .verify();
   }
+
+  @Test
+  @DisplayName("Data not found on remote-server")
+  void testNotFoud()
+  {
+    Mono<String> mono = Mono.error(WebClientResponseException.create(404, "", null, null, null));
+    when(service.getRemoteText("foo")).thenReturn(mono);
+
+    String result = controller.fetch(model, "foo");
+
+    assertThat(result).isEqualTo("home");
+    ArgumentCaptor<Mono<String>> captor = ArgumentCaptor.forClass(Mono.class);
+    verify(model).addAttribute(eq("text"), captor.capture());
+    StepVerifier
+        .create(captor.getValue())
+        .expectNext("404 ")
+        .expectComplete()
+        .verify();
+  }
 }