forked from pierront/mylibrary-template
J'avais oublié quelques tests a tester, et j'ai résolu un bug sans savoir comment, mais c'est résolu
This commit is contained in:
@@ -4,7 +4,7 @@ import java.text.MessageFormat;
|
||||
|
||||
public class IllegalBookStockException extends Exception {
|
||||
|
||||
public static final String CANNOT_REMOVE_STOCK = "Cannot remove {0} stock from {1} points";
|
||||
public static final String CANNOT_REMOVE_STOCK = "Cannot remove {0} stock from {1} stock";
|
||||
|
||||
public IllegalBookStockException(int needed, int actual) {
|
||||
super(MessageFormat.format(CANNOT_REMOVE_STOCK, needed,
|
||||
|
@@ -7,6 +7,8 @@ import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.swing.text.html.Option;
|
||||
|
||||
@NoArgsConstructor
|
||||
public final class BookRepository {
|
||||
private final List<Book> books = new ArrayList<>();
|
||||
@@ -20,17 +22,23 @@ public final class BookRepository {
|
||||
}
|
||||
|
||||
public Book save(Book newBook) {
|
||||
Optional<Book> optionalBookWithSameId = this.findByISBN(newBook.getIsbn());
|
||||
optionalBookWithSameId.ifPresent(books::remove);
|
||||
for (Book book: books) {
|
||||
if (book.getIsbn() == newBook.getIsbn()){
|
||||
books.remove(book);
|
||||
}
|
||||
}
|
||||
this.books.add(newBook);
|
||||
return newBook;
|
||||
}
|
||||
|
||||
public Optional<Book> findByISBN(String isbn) {
|
||||
|
||||
return this.books.stream()
|
||||
.filter(book -> book.getIsbn().equals(isbn))
|
||||
.findFirst();
|
||||
for (Book book:books) {
|
||||
System.out.println(book.getIsbn());
|
||||
if(book.getIsbn().equals(isbn)){
|
||||
return Optional.of(book);
|
||||
}
|
||||
}
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
public boolean existsByISBN(String isbn) {
|
||||
|
@@ -23,11 +23,12 @@ public final class BookUseCase {
|
||||
public String registerBook(BookInfo newBook) throws NotValidBookException {
|
||||
BookValidator.validate(newBook);
|
||||
Book bookToRegister = BookConverter.toDomain(newBook);
|
||||
Book bookToRegistered = bookRepository.save(bookToRegister);
|
||||
return bookToRegistered.getIsbn();
|
||||
bookRepository.save(bookToRegister);
|
||||
return bookToRegister.getIsbn();
|
||||
}
|
||||
|
||||
public Optional<BookDTO> findBookByISBN(String isbn) {
|
||||
System.out.println(bookRepository.findAll().size());
|
||||
Optional<Book> optionalBook = bookRepository.findByISBN(isbn);
|
||||
return optionalBook.map(BookConverter::toDTO);
|
||||
}
|
||||
|
@@ -24,7 +24,10 @@ public final class BookValidator {
|
||||
public static void validate(BookInfo newBook) throws NotValidBookException {
|
||||
validateAuthor(newBook);
|
||||
validateTitle(newBook);
|
||||
validatePublisher(newBook);
|
||||
validateISBN(newBook);
|
||||
validatePrice(newBook);
|
||||
validateInitialStock(newBook);
|
||||
}
|
||||
|
||||
private static void validateISBN(BookInfo newBook)
|
||||
|
@@ -72,7 +72,7 @@ class BookRepositoryTest {
|
||||
assertEquals(book1.getTitle(), savedBook.getTitle());
|
||||
assertEquals(book1.getAuthor(), savedBook.getAuthor());
|
||||
assertEquals(book1.getPublisher(), savedBook.getPublisher());
|
||||
assertEquals(book1, savedBook.getDate());
|
||||
assertEquals(book1.getDate(), savedBook.getDate());
|
||||
assertEquals(book1.getPrice(), savedBook.getPrice());
|
||||
assertEquals(book1.getInitialStock(), savedBook.getInitialStock());
|
||||
assertEquals(book1.getCategories(), savedBook.getCategories());
|
||||
@@ -103,16 +103,16 @@ class BookRepositoryTest {
|
||||
Book savedBook = repository.save(updatedBook);
|
||||
|
||||
assertEquals(1, repository.findAll().size());
|
||||
assertEquals(book1.getIsbn(), savedBook.getIsbn());
|
||||
assertEquals(book1.getTitle(), savedBook.getTitle());
|
||||
assertEquals(book1.getAuthor(), savedBook.getAuthor());
|
||||
assertEquals(book1.getPublisher(), savedBook.getPublisher());
|
||||
assertEquals(book1, savedBook.getDate());
|
||||
assertEquals(book1.getPrice(), savedBook.getPrice());
|
||||
assertEquals(book1.getInitialStock(), savedBook.getInitialStock());
|
||||
assertEquals(book1.getCategories(), savedBook.getCategories());
|
||||
assertEquals(book1.getDescription(), savedBook.getDescription());
|
||||
assertEquals(book1.getLanguage(), savedBook.getLanguage());
|
||||
assertEquals(updatedBook.getIsbn(), savedBook.getIsbn());
|
||||
assertEquals(updatedBook.getTitle(), savedBook.getTitle());
|
||||
assertEquals(updatedBook.getAuthor(), savedBook.getAuthor());
|
||||
assertEquals(updatedBook.getPublisher(), savedBook.getPublisher());
|
||||
assertEquals(updatedBook.getDate(), savedBook.getDate());
|
||||
assertEquals(updatedBook.getPrice(), savedBook.getPrice());
|
||||
assertEquals(updatedBook.getInitialStock(), savedBook.getInitialStock());
|
||||
assertEquals(updatedBook.getCategories(), savedBook.getCategories());
|
||||
assertEquals(updatedBook.getDescription(), savedBook.getDescription());
|
||||
assertEquals(updatedBook.getLanguage(), savedBook.getLanguage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -159,7 +159,7 @@ class BookRepositoryTest {
|
||||
assertEquals(book1.getTitle(), foundBook.get().getTitle());
|
||||
assertEquals(book1.getAuthor(), foundBook.get().getAuthor());
|
||||
assertEquals(book1.getPublisher(), foundBook.get().getPublisher());
|
||||
assertEquals(book1, foundBook.get().getDate());
|
||||
assertEquals(book1.getDate(), foundBook.get().getDate());
|
||||
assertEquals(book1.getPrice(), foundBook.get().getPrice());
|
||||
assertEquals(book1.getInitialStock(), foundBook.get().getInitialStock());
|
||||
assertEquals(book1.getCategories(), foundBook.get().getCategories());
|
||||
@@ -187,7 +187,7 @@ class BookRepositoryTest {
|
||||
assertEquals(book1.getTitle(), foundBook.get().getTitle());
|
||||
assertEquals(book1.getAuthor(), foundBook.get().getAuthor());
|
||||
assertEquals(book1.getPublisher(), foundBook.get().getPublisher());
|
||||
assertEquals(book1, foundBook.get().getDate());
|
||||
assertEquals(book1.getDate(), foundBook.get().getDate());
|
||||
assertEquals(book1.getPrice(), foundBook.get().getPrice());
|
||||
assertEquals(book1.getInitialStock(), foundBook.get().getInitialStock());
|
||||
assertEquals(book1.getCategories(), foundBook.get().getCategories());
|
||||
|
@@ -2,6 +2,7 @@ package fr.iut_fbleau.but3.dev62.mylibrary.book.usecase;
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.book.BookDTO;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.book.BookInfo;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.book.converter.BookConverter;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.book.entity.Book;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.book.exception.BookNotFoundException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.book.exception.NotValidBookException;
|
||||
@@ -15,6 +16,7 @@ import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import javax.swing.text.html.Option;
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
@@ -44,7 +46,7 @@ public class BookUseCaseTest {
|
||||
ArrayList<String> categories = new ArrayList<>(); categories.add("Histoire"); categories.add("Action");
|
||||
Date date = Date.from(Instant.now());
|
||||
testBook = Book.builder()
|
||||
.isbn(bookISBN)
|
||||
.isbn("1234567890123")
|
||||
.title("LivreRandom")
|
||||
.author("John Doe")
|
||||
.publisher("RandomPublisher")
|
||||
@@ -56,7 +58,7 @@ public class BookUseCaseTest {
|
||||
.language("Francais")
|
||||
.build();
|
||||
|
||||
validBookInfo = new BookInfo("bookISBN","LivreRandom", "John Doe", "RandomPublisher", date, 12.5, 50, categories, "Je suis un livre qui est composé de mots.", "Francais");
|
||||
validBookInfo = new BookInfo("1234567890123","LivreRandom", "John Doe", "RandomPublisher", date, 12.5, 50, categories, "Je suis un livre qui est composé de mots.", "Francais");
|
||||
}
|
||||
|
||||
|
||||
@@ -68,6 +70,7 @@ public class BookUseCaseTest {
|
||||
@Test
|
||||
@DisplayName("Should register book when valid data is provided")
|
||||
void testRegisterBookWithValidData() throws NotValidBookException {
|
||||
bookISBN = "1234567890123";
|
||||
when(bookRepository.save(any(Book.class))).thenReturn(testBook);
|
||||
|
||||
String registeredISBN = bookUseCase.registerBook(validBookInfo);
|
||||
@@ -100,8 +103,10 @@ public class BookUseCaseTest {
|
||||
|
||||
@Test
|
||||
@DisplayName("Should return book when ISBN exists")
|
||||
void testFindBookByISBN() {
|
||||
when(bookRepository.findByISBN("1234567890123")).thenReturn(Optional.empty());
|
||||
void testFindBookByISBN() throws NotValidBookException {
|
||||
when(bookRepository.findByISBN("1234567890123")).thenReturn(Optional.of(testBook));
|
||||
|
||||
String registeredISBN = bookUseCase.registerBook(validBookInfo);
|
||||
|
||||
Optional<BookDTO> foundBook = bookUseCase.findBookByISBN("1234567890123");
|
||||
|
||||
|
@@ -224,7 +224,7 @@ class BookValidatorTest {
|
||||
|
||||
@Test
|
||||
@DisplayName("Should throw exception when Initial Stock is negative")
|
||||
void testValidateNegativePrice() {
|
||||
void testValidateNegativeStock() {
|
||||
ArrayList<String> categories = new ArrayList<>(); categories.add("Categorie1"); categories.add("Categorie2");
|
||||
BookInfo bookWithNegativeInitialStock = new BookInfo("1234567890123", "Livre", "Auteur", "Editeur", Date.from(Instant.now()), 5.12, -15, categories, "description", "langue");
|
||||
|
||||
|
Reference in New Issue
Block a user