From: Kai Moritz Date: Fri, 15 Mar 2024 10:18:29 +0000 (+0100) Subject: test: Fixed `AbstractConfigurationIT#testPutMessageInNewChatRoom()` X-Git-Url: http://juplo.de/gitweb/?a=commitdiff_plain;h=ad2750e7cc30a885119c2ef3396374d81c3806ed;p=demos%2Fkafka%2Fchat test: Fixed `AbstractConfigurationIT#testPutMessageInNewChatRoom()` * The first request in the awaited assertion must create a chat-room, that is owned by the instance. * Hence, _it has to_ assert, that the shard of the created chat-room is `2` - the only shard, the test-instance owns, or _empty_, if the instance under test does not implement sharding. --- diff --git a/src/test/java/de/juplo/kafka/chat/backend/AbstractConfigurationIT.java b/src/test/java/de/juplo/kafka/chat/backend/AbstractConfigurationIT.java index 21605bc1..3f25cedf 100644 --- a/src/test/java/de/juplo/kafka/chat/backend/AbstractConfigurationIT.java +++ b/src/test/java/de/juplo/kafka/chat/backend/AbstractConfigurationIT.java @@ -3,6 +3,8 @@ package de.juplo.kafka.chat.backend; import com.fasterxml.jackson.databind.ObjectMapper; import de.juplo.kafka.chat.backend.api.ChatRoomInfoTo; import lombok.extern.slf4j.Slf4j; +import org.hamcrest.BaseMatcher; +import org.hamcrest.Description; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -193,6 +195,9 @@ public abstract class AbstractConfigurationIT .atMost(Duration.ofSeconds(15)) .untilAsserted(() -> { + // The first request creates a new chat-room + // It must be repeated, until a chat-room was created, + // that is owned by the instance byte[] result = webTestClient .post() .uri("http://localhost:{port}/create", port) @@ -204,8 +209,21 @@ public abstract class AbstractConfigurationIT .expectBody() .jsonPath("$.id").exists() .jsonPath("$.name").isEqualTo("bar") - // The hard must not be asserted, because not all implementations ar aware of it - // .jsonPath("$.shard").isEqualTo(Integer.valueOf(2)) + .jsonPath("$.shard").value(new BaseMatcher() { + @Override + public boolean matches(Object actual) + { + return actual == null + ? true + : actual.equals(Integer.valueOf(2)); + } + + @Override + public void describeTo(Description description) + { + description.appendText("shard has expected value 2, or is empty"); + } + }) .returnResult() .getResponseBody(); ChatRoomInfoTo chatRoomInfo = objectMapper.readValue(result, ChatRoomInfoTo.class);