diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/exception/IllegalBookStockException.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/exception/IllegalBookStockException.java index 4d5dc52..ed6f0dc 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/exception/IllegalBookStockException.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/exception/IllegalBookStockException.java @@ -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, diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/repository/BookRepository.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/repository/BookRepository.java index a45d12d..0a5d21a 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/repository/BookRepository.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/repository/BookRepository.java @@ -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 books = new ArrayList<>(); @@ -20,17 +22,23 @@ public final class BookRepository { } public Book save(Book newBook) { - Optional 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 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) { diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/usecase/BookUseCase.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/usecase/BookUseCase.java index b19b31c..07c3832 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/usecase/BookUseCase.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/usecase/BookUseCase.java @@ -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 findBookByISBN(String isbn) { + System.out.println(bookRepository.findAll().size()); Optional optionalBook = bookRepository.findByISBN(isbn); return optionalBook.map(BookConverter::toDTO); } diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/validator/BookValidator.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/validator/BookValidator.java index b6f30f3..08d5fc3 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/validator/BookValidator.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/validator/BookValidator.java @@ -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) diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/repository/BookRepositoryTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/repository/BookRepositoryTest.java index 972589d..218bc9e 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/repository/BookRepositoryTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/repository/BookRepositoryTest.java @@ -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()); diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/usecase/BookUseCaseTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/usecase/BookUseCaseTest.java index d057f4f..3557454 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/usecase/BookUseCaseTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/usecase/BookUseCaseTest.java @@ -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 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 foundBook = bookUseCase.findBookByISBN("1234567890123"); diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/validator/BookValidatorTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/validator/BookValidatorTest.java index 5eb0007..e69b952 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/validator/BookValidatorTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/validator/BookValidatorTest.java @@ -224,7 +224,7 @@ class BookValidatorTest { @Test @DisplayName("Should throw exception when Initial Stock is negative") - void testValidateNegativePrice() { + void testValidateNegativeStock() { ArrayList 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");