diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/BookInfo.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/BookInfo.java index 0ecc1b8..6bdbcb2 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/BookInfo.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/BookInfo.java @@ -2,5 +2,5 @@ package fr.iut_fbleau.but3.dev62.mylibrary.book; import java.time.LocalDate; -public record BookInfo(String title, String author, String editor, LocalDate date) { +public record BookInfo(String isbn, String title, String author, String editor, LocalDate date) { } diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/BookSalesInfo.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/BookSalesInfo.java new file mode 100644 index 0000000..5d0b828 --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/BookSalesInfo.java @@ -0,0 +1,11 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.book; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +public class BookSalesInfo { + private double price; + private Integer stock; +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/converter/BookConverter.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/converter/BookConverter.java index 5bb8efc..42713a2 100644 --- a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/converter/BookConverter.java +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/book/converter/BookConverter.java @@ -4,20 +4,21 @@ package fr.iut_fbleau.but3.dev62.mylibrary.book.converter; import fr.iut_fbleau.but3.dev62.mylibrary.book.BookDTO; import fr.iut_fbleau.but3.dev62.mylibrary.book.BookDetails; import fr.iut_fbleau.but3.dev62.mylibrary.book.BookInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.book.BookSalesInfo; import fr.iut_fbleau.but3.dev62.mylibrary.book.entity.Book; public final class BookConverter { private BookConverter(){} - public static Book ToDomain(BookInfo bookinfo, BookDetails bookdetails){ + public static Book ToDomain(BookInfo bookinfo, BookSalesInfo booksalesinfo, BookDetails bookdetails){ return Book.builder() - .isbn("0000000000000") + .isbn(bookinfo.isbn()) .title(bookinfo.title()) .author(bookinfo.author()) .editor(bookinfo.editor()) .date(bookinfo.date()) - .price(50.99) - .stock(5) + .price(booksalesinfo.getPrice()) + .stock(booksalesinfo.getStock()) .categories(bookdetails.getCategories()) .description(bookdetails.getDescription()) .language(bookdetails.getLanguage()) diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/converter/BookConverterTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/converter/BookConverterTest.java index cd1731a..071d520 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/converter/BookConverterTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/converter/BookConverterTest.java @@ -3,6 +3,7 @@ package fr.iut_fbleau.but3.dev62.mylibrary.book.converter; 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.BookDetails; +import fr.iut_fbleau.but3.dev62.mylibrary.book.BookSalesInfo; import fr.iut_fbleau.but3.dev62.mylibrary.book.entity.Book; import org.junit.jupiter.api.DisplayName; @@ -24,7 +25,11 @@ public class BookConverterTest { @Test void ShouldConvertBookToDomain(){ LocalDate date = LocalDate.of(2026, 3, 24); - BookInfo bookinfo = new BookInfo("La vie de Maxime", "Marvin Aubert", "Kioon", date); + BookInfo bookinfo = new BookInfo("0000000000000","La vie de Maxime", "Marvin Aubert", "Kioon", date); + BookSalesInfo booksalesinfo = BookSalesInfo.builder() + .price(12) + .stock(10) + .build(); ArrayList categories = new ArrayList<>(); categories.add("Thriller"); categories.add("Biographie"); @@ -34,13 +39,16 @@ public class BookConverterTest { .language("Français") .build(); - Book result = BookConverter.ToDomain(bookinfo, bookdetails); + Book result = BookConverter.ToDomain(bookinfo, booksalesinfo, bookdetails); + assertEquals(bookinfo.isbn(), result.getIsbn()); assertEquals(bookinfo.title(), result.getTitle()); assertEquals(bookinfo.author(), result.getAuthor()); assertEquals(bookinfo.editor(), result.getEditor()); assertEquals(bookinfo.date(), result.getDate()); - assertEquals(categories, result.getCategories()); + assertEquals(booksalesinfo.getPrice(), result.getPrice()); + assertEquals(booksalesinfo.getStock(), result.getStock()); + assertEquals(bookdetails.getCategories(), result.getCategories()); assertEquals(bookdetails.getDescription(), result.getDescription()); assertEquals(bookdetails.getLanguage(), result.getLanguage()); } @@ -88,7 +96,11 @@ public class BookConverterTest { @DisplayName("Should preserve empty string values during conversion") void shouldPreserveEmptyStrings() { LocalDate date = LocalDate.of(2026, 3, 24); - BookInfo bookinfo = new BookInfo("La vie de Maxime", "Marvin Aubert", "Kioon", date); + BookInfo bookinfo = new BookInfo("0000000000000","La vie de Maxime", "Marvin Aubert", "Kioon", date); + BookSalesInfo booksalesinfo = BookSalesInfo.builder() + .price(12) + .stock(10) + .build(); ArrayList categories = new ArrayList<>(); categories.add("Thriller"); categories.add("Biographie"); @@ -98,7 +110,7 @@ public class BookConverterTest { .language("Français") .build(); - Book book = BookConverter.ToDomain(bookinfo, bookdetails); + Book book = BookConverter.ToDomain(bookinfo, booksalesinfo, bookdetails); BookDTO result = BookConverter.ToDTO(book); assertEquals("", result.getDescription()); diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/exception/IllegalBookStockExceptionTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/exception/IllegalBookStockExceptionTest.java index 2a8f91a..9c4b18f 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/exception/IllegalBookStockExceptionTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/book/exception/IllegalBookStockExceptionTest.java @@ -1,6 +1,5 @@ package fr.iut_fbleau.but3.dev62.mylibrary.book.exception; -import fr.iut_fbleau.but3.dev62.mylibrary.customer.exception.IllegalCustomerPointException; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest;