Api java #6
@@ -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