refactor: Simplified implementation - Removed interface `ChatRoomFactory`
[demos/kafka/chat] / src / test / java / de / juplo / kafka / chat / backend / persistence / inmemory / SimpleChatHomeTest.java
1 package de.juplo.kafka.chat.backend.persistence.inmemory;
2
3 import com.fasterxml.jackson.databind.ObjectMapper;
4 import de.juplo.kafka.chat.backend.domain.ChatHomeTest;
5 import de.juplo.kafka.chat.backend.persistence.StorageStrategy;
6 import de.juplo.kafka.chat.backend.persistence.storage.files.FilesStorageStrategy;
7 import org.springframework.boot.test.context.TestConfiguration;
8 import org.springframework.context.annotation.Bean;
9
10 import java.nio.file.Paths;
11 import java.time.Clock;
12
13
14 public class SimpleChatHomeTest extends ChatHomeTest
15 {
16   @TestConfiguration
17   static class Configuration
18   {
19     @Bean
20     SimpleChatHome chatHome(
21         StorageStrategy storageStrategy,
22         Clock clock)
23     {
24       return new SimpleChatHome(
25           storageStrategy.read(),
26           clock,
27           bufferSize());
28     }
29
30     @Bean
31     public FilesStorageStrategy storageStrategy(Clock clock)
32     {
33       return new FilesStorageStrategy(
34           Paths.get("target", "test-classes", "data", "files"),
35           clock,
36           bufferSize(),
37           chatRoomId -> 0,
38           messageFlux -> new InMemoryChatRoomService(messageFlux),
39           new ObjectMapper());
40     }
41
42     @Bean
43     Clock clock()
44     {
45       return Clock.systemDefaultZone();
46     }
47
48     int bufferSize()
49     {
50       return 8;
51     }
52   }
53 }