Select Git revision
LibraryTest.java
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
LibraryTest.java 2.06 KiB
package fr.univamu.progav.td9;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
public class LibraryTest {
private Library library;
private Book book1;
private Book book2;
private Book book3;
@BeforeEach
void setUp() {
library = new Library();
book1 = new Book("123", "Livre 1");
book2 = new Book("456", "Livre 2");
book3 = new Book("789", "Livre 3");
library.addBook(book1);
library.addBook(book2);
library.addBook(book3);
}
@Test
void testFindBookThrowsException() {
assertThrows(BookNotFoundException.class, () -> {
library.findBook("999");
});
}
@Test
void testSingleCheckoutSuccess() throws BookException {
library.checkoutBook("123");
assertEquals(BookStatus.BORROWED, library.getBookStatus("123"));
}
@Test
void testBulkCheckoutPartialSuccess() throws BookException {
library.checkoutBook("123");
Book nonExistentBook = new Book("999", "Nonexistent");
List<String> booksToCheckout = List.of("123", "456", "999");
BulkCheckoutResult result = library.checkoutBooks(booksToCheckout);
assertFalse(result.isCompletelySuccessful());
assertEquals(1, result.successfulCheckouts().size());
assertEquals(2, result.failedCheckouts().size());
assertInstanceOf(BookUnavailableException.class, result.failedCheckouts().get(0));
assertInstanceOf(BookNotFoundException.class, result.failedCheckouts().get(1));
assertEquals(
"Livre 1 (123): book unavailable",
result.failedCheckouts().get(0).getMessage()
);
assertEquals(
"Nonexistent (999): book not found",
result.failedCheckouts().get(1).getMessage()
);
}
@Test
void testBulkCheckoutAllSuccess() {
List<String> booksToCheckout = List.of("123", "456");
BulkCheckoutResult result = library.checkoutBooks(booksToCheckout);
assertTrue(result.isCompletelySuccessful());
assertEquals(2, result.successfulCheckouts().size());
assertTrue(result.failedCheckouts().isEmpty());
}
}