Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
No results found
Show changes
Commits on Source (4)
......@@ -11,7 +11,7 @@
<groupId>com.example</groupId>
<artifactId>libarry</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>libarry</name>
<name>library</name>
<description>Demo project for Spring Boot</description>
<url/>
<licenses>
......
......@@ -4,10 +4,10 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class LibarryApplication {
public class LibraryApplication {
public static void main(String[] args) {
SpringApplication.run(LibarryApplication.class, args);
SpringApplication.run(LibraryApplication.class, args);
}
}
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
package com.example.library;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.*;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Optional;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
@ExtendWith(MockitoExtension.class)
public class LibraryServiceTest {
@Mock
private BookRepository repository;
@InjectMocks
private LibraryService service;
@Captor
private ArgumentCaptor<Book> bookCaptor;
@Test
void borrowBook_shouldUpdateAvailabilityAndSave() {
// Arrange
Book book = new Book("Effective Java", "Joshua Bloch", true);
book.setAvailable(true);
when(repository.findById(1L)).thenReturn(Optional.of(book));
when(repository.save(any(Book.class))).thenAnswer(inv -> inv.getArgument(0));
// Act
boolean result = service.borrowBook(1L);
// Assert
assertTrue(result);
verify(repository).save(bookCaptor.capture());
Book savedBook = bookCaptor.getValue();
assertFalse(savedBook.isAvailable(), "Book should no longer be available after borrowing");
}
@Test
void returnBook_shouldUpdateAvailabilityAndSave() {
Book book = new Book("Domain-Driven Design", "Eric Evans", false);
when(repository.findById(2L)).thenReturn(Optional.of(book));
when(repository.save(any(Book.class))).thenAnswer(inv -> inv.getArgument(0));
boolean result = service.returnBook(2L);
assertTrue(result);
verify(repository).save(bookCaptor.capture());
Book savedBook = bookCaptor.getValue();
assertTrue(savedBook.isAvailable(), "Book should be available after return");
}
@Test
void borrowBook_shouldFail_whenBookNotFound() {
when(repository.findById(99L)).thenReturn(Optional.empty());
boolean result = service.borrowBook(99L);
assertFalse(result);
verify(repository, never()).save(any());
}
@Test
void returnBook_shouldFail_whenBookAlreadyAvailable() {
Book book = new Book("Clean Architecture", "Robert C. Martin", true);
when(repository.findById(3L)).thenReturn(Optional.of(book));
boolean result = service.returnBook(3L);
assertFalse(result);
verify(repository, never()).save(any());
}
}