From 164f9f81a73d1094c56ffe56d4909040c25ffa62 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Ko=C5=BEusznik?= <jan@kozusznik.cz>
Date: Sun, 6 Apr 2025 18:33:30 +0200
Subject: [PATCH] BookEventServiceTest

---
 .../example/library/BookEventServiceTest.java | 46 +++++++++++++++++++
 1 file changed, 46 insertions(+)
 create mode 100644 src/test/java/com/example/library/BookEventServiceTest.java

diff --git a/src/test/java/com/example/library/BookEventServiceTest.java b/src/test/java/com/example/library/BookEventServiceTest.java
new file mode 100644
index 0000000..84ff509
--- /dev/null
+++ b/src/test/java/com/example/library/BookEventServiceTest.java
@@ -0,0 +1,46 @@
+package com.example.library;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.mockito.Mockito.verify;
+
+@ExtendWith(MockitoExtension.class)
+public class BookEventServiceTest {
+
+  @Mock
+  private BookEventRegistry registry;
+
+  @Captor
+  private ArgumentCaptor<BookEventListener> listenerCaptor;
+
+  @InjectMocks
+  private BookEventService service;
+
+  @Test
+  void shouldRegisterListenerAndReactToEvent() {
+    // Arrange
+    // vyvoláme ručně @PostConstruct (mimo Spring)
+    service.register();
+
+    // Verify registrace listeneru
+    verify(registry).registerListener(listenerCaptor.capture());
+
+    // Simulujeme událost
+    Book testBook = new Book("TestovacĂ­ kniha", "TestovacĂ­ autor", true);
+    BookEventListener capturedListener = listenerCaptor.getValue();
+
+    // Act
+    capturedListener.onBookCreated(testBook);
+
+    // Assert – zde místo `System.out` bys typicky měl mock služby, která na to reaguje
+    // nebo jinou verifikaci, např. kontrolu DB volání nebo logiky
+    assertNotNull(capturedListener);
+  }
+}
\ No newline at end of file
-- 
GitLab