ajout du converter Info-entity-DTO + tests
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
package fr.iut_fbleau.but3.dev62.mylibrary.book;
|
||||||
|
|
||||||
|
import fr.iut_fbleau.but3.dev62.mylibrary.book.entity.Category;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@Builder
|
||||||
|
@Getter
|
||||||
|
public class BookDTO {
|
||||||
|
private final long isbn;
|
||||||
|
private final String title;
|
||||||
|
private final String author;
|
||||||
|
private final String publisher;
|
||||||
|
private final LocalDate publicationDate;
|
||||||
|
private final double price;
|
||||||
|
private final int quantity;
|
||||||
|
private final List<Category> categories;
|
||||||
|
private final String description;
|
||||||
|
private final String language;
|
||||||
|
}
|
||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
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.entity.Book;
|
||||||
|
|
||||||
|
public final class BookConverter {
|
||||||
|
|
||||||
|
private BookConverter() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Book toDomain(BookInfo book) {
|
||||||
|
return Book.builder()
|
||||||
|
.isbn(book.isbn())
|
||||||
|
.title(book.title())
|
||||||
|
.author(book.author())
|
||||||
|
.publisher(book.publisher())
|
||||||
|
.publicationDate(book.publicationDate())
|
||||||
|
.price(book.price())
|
||||||
|
.quantity(book.quantity())
|
||||||
|
.categories(book.categories())
|
||||||
|
.description(book.description())
|
||||||
|
.language(book.language())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BookDTO toDTO(Book book) {
|
||||||
|
return BookDTO.builder()
|
||||||
|
.isbn(book.getIsbn())
|
||||||
|
.title(book.getTitle())
|
||||||
|
.author(book.getAuthor())
|
||||||
|
.publisher(book.getPublisher())
|
||||||
|
.publicationDate(book.getPublicationDate())
|
||||||
|
.price(book.getPrice())
|
||||||
|
.quantity(book.getQuantity())
|
||||||
|
.categories(book.getCategories())
|
||||||
|
.description(book.getDescription())
|
||||||
|
.language(book.getLanguage())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
||||||
+86
@@ -0,0 +1,86 @@
|
|||||||
|
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.entity.Book;
|
||||||
|
import fr.iut_fbleau.but3.dev62.mylibrary.book.entity.Category;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.List;
|
||||||
|
import org.junit.jupiter.api.DisplayName;
|
||||||
|
import org.junit.jupiter.api.Nested;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
class BookConverterTest {
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
@DisplayName("toDomain() method tests")
|
||||||
|
class ToDomainTests {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("Should convert BookInfo to Book entity preserving all fields")
|
||||||
|
void testToDomain() {
|
||||||
|
BookInfo info = new BookInfo(
|
||||||
|
9780321125217L,
|
||||||
|
"DDD",
|
||||||
|
"Evans",
|
||||||
|
"Addison-Wesley",
|
||||||
|
LocalDate.of(2003, 8, 22),
|
||||||
|
54.99,
|
||||||
|
10,
|
||||||
|
List.of(Category.SCIENCE),
|
||||||
|
"desc",
|
||||||
|
"EN"
|
||||||
|
);
|
||||||
|
|
||||||
|
Book book = BookConverter.toDomain(info);
|
||||||
|
|
||||||
|
assertEquals(info.isbn(), book.getIsbn());
|
||||||
|
assertEquals(info.title(), book.getTitle());
|
||||||
|
assertEquals(info.author(), book.getAuthor());
|
||||||
|
assertEquals(info.publisher(), book.getPublisher());
|
||||||
|
assertEquals(info.publicationDate(), book.getPublicationDate());
|
||||||
|
assertEquals(info.price(), book.getPrice());
|
||||||
|
assertEquals(info.quantity(), book.getQuantity());
|
||||||
|
assertEquals(info.categories(), book.getCategories());
|
||||||
|
assertEquals(info.description(), book.getDescription());
|
||||||
|
assertEquals(info.language(), book.getLanguage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
@DisplayName("toDTO() method tests")
|
||||||
|
class ToDTOTests {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("Should convert Book entity to BookDTO preserving all fields")
|
||||||
|
void testToDTO() {
|
||||||
|
Book book = Book.builder()
|
||||||
|
.isbn(123L)
|
||||||
|
.title("T")
|
||||||
|
.author("A")
|
||||||
|
.publisher("P")
|
||||||
|
.publicationDate(LocalDate.of(2020, 1, 1))
|
||||||
|
.price(9.99)
|
||||||
|
.quantity(5)
|
||||||
|
.categories(List.of(Category.FICTION))
|
||||||
|
.description("d")
|
||||||
|
.language("FR")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
BookDTO dto = BookConverter.toDTO(book);
|
||||||
|
|
||||||
|
assertEquals(123L, dto.getIsbn());
|
||||||
|
assertEquals("T", dto.getTitle());
|
||||||
|
assertEquals("A", dto.getAuthor());
|
||||||
|
assertEquals("P", dto.getPublisher());
|
||||||
|
assertEquals(LocalDate.of(2020, 1, 1), dto.getPublicationDate());
|
||||||
|
assertEquals(9.99, dto.getPrice());
|
||||||
|
assertEquals(5, dto.getQuantity());
|
||||||
|
assertEquals(List.of(Category.FICTION), dto.getCategories());
|
||||||
|
assertEquals("d", dto.getDescription());
|
||||||
|
assertEquals("FR", dto.getLanguage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user