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 0000000000000000000000000000000000000000..84ff50923a37114dd93ba9ac7d2330ba83e8eabd --- /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