package de.juplo.kafka.chat.backend.api;
-import de.juplo.kafka.chat.backend.ChatBackendProperties;
import de.juplo.kafka.chat.backend.domain.*;
import de.juplo.kafka.chat.backend.persistence.inmemory.InMemoryChatHomeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient;
import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.TestConfiguration;
import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.context.annotation.Bean;
import org.springframework.http.MediaType;
import org.springframework.test.web.reactive.server.WebTestClient;
import reactor.core.publisher.Mono;
import java.time.Clock;
import java.time.LocalDateTime;
-import java.util.Arrays;
import java.util.UUID;
import static org.mockito.ArgumentMatchers.any;
@SpringBootTest(properties = {
"spring.main.allow-bean-definition-overriding=true",
- "chat.backend.inmemory.owned-shards=0,1,2,3,4,5,6,7,8,9" })
+ "chat.backend.inmemory.sharding-strategy=none" })
@AutoConfigureWebTestClient
@Slf4j
public class ChatBackendControllerTest
.thenReturn(Mono.just(existingMessage));
// Needed for readable error-reports, in case of a bug that leads to according unwanted call
when(chatRoomService.persistMessage(any(Message.MessageKey.class), any(LocalDateTime.class), any(String.class)))
- .thenReturn(mock(Message.class));
+ .thenReturn(Mono.just(mock(Message.class)));
// When
client
.thenReturn(Mono.empty());
// Needed for readable error-reports, in case of a bug that leads to according unwanted call
when(chatRoomService.persistMessage(any(Message.MessageKey.class), any(LocalDateTime.class), any(String.class)))
- .thenReturn(mock(Message.class));
+ .thenReturn(Mono.just(mock(Message.class)));
// When
client
.jsonPath("$.username").isEqualTo(user);
verify(chatRoomService, never()).persistMessage(eq(key), any(LocalDateTime.class), any(String.class));
}
-
- @TestConfiguration
- static class Config
- {
- @Bean
- ChatHome[] chatHomes(
- ChatBackendProperties properties,
- ChatHomeFactory factory)
- {
- ChatHome[] chatHomes = new ChatHome[properties.getInmemory().getNumShards()];
- Arrays
- .stream(properties.getInmemory().getOwnedShards())
- .forEach(i -> chatHomes[i] = factory.createChatHome(i));
- return chatHomes;
- }
- }
}