forked from pierront/mylibrary-template
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 50dd02423d | |||
| 6e3750e275 | |||
| 58e4a53196 |
@@ -0,0 +1,18 @@
|
|||||||
|
package fr.iut_fbleau.but3.dev62.mylibrary.review;
|
||||||
|
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Builder
|
||||||
|
|
||||||
|
public class ReviewDTO {
|
||||||
|
private UUID customerId;
|
||||||
|
private UUID bookId;
|
||||||
|
private Integer note;
|
||||||
|
private String comment;
|
||||||
|
private LocalDate purchaseDate;
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package fr.iut_fbleau.but3.dev62.mylibrary.review;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
public record ReviewInfo(Integer note, String comment, LocalDate purchaseDate) {
|
||||||
|
}
|
||||||
+29
@@ -0,0 +1,29 @@
|
|||||||
|
package fr.iut_fbleau.but3.dev62.mylibrary.review.converter;
|
||||||
|
|
||||||
|
import fr.iut_fbleau.but3.dev62.mylibrary.review.ReviewDTO;
|
||||||
|
import fr.iut_fbleau.but3.dev62.mylibrary.review.ReviewInfo;
|
||||||
|
import fr.iut_fbleau.but3.dev62.mylibrary.review.entity.Review;
|
||||||
|
|
||||||
|
public class ReviewConverter {
|
||||||
|
private ReviewConverter() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Review toDomain(ReviewInfo newReview) {
|
||||||
|
return Review.builder()
|
||||||
|
.note(newReview.note())
|
||||||
|
.comment(newReview.comment())
|
||||||
|
.purchaseDate(newReview.purchaseDate())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ReviewDTO toDTO(Review review) {
|
||||||
|
return ReviewDTO.builder()
|
||||||
|
.customerId(review.getCustomerId())
|
||||||
|
.bookId(review.getBookId())
|
||||||
|
.note(review.getNote())
|
||||||
|
.comment(review.getComment())
|
||||||
|
.purchaseDate(review.getPurchaseDate())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package fr.iut_fbleau.but3.dev62.mylibrary.review.entity;
|
||||||
|
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Builder
|
||||||
|
|
||||||
|
public class Review {
|
||||||
|
private UUID customerId;
|
||||||
|
private UUID bookId;
|
||||||
|
private Integer note;
|
||||||
|
private String comment;
|
||||||
|
private LocalDate purchaseDate;
|
||||||
|
}
|
||||||
+81
@@ -0,0 +1,81 @@
|
|||||||
|
package fr.iut_fbleau.but3.dev62.mylibrary.review.converter;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import fr.iut_fbleau.but3.dev62.mylibrary.review.ReviewDTO;
|
||||||
|
import fr.iut_fbleau.but3.dev62.mylibrary.review.ReviewInfo;
|
||||||
|
import fr.iut_fbleau.but3.dev62.mylibrary.review.entity.Review;
|
||||||
|
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.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
|
||||||
|
@DisplayName("ReviewConverterTest Unit Tests")
|
||||||
|
public class ReviewConverterTest {
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
@DisplayName("toDomain() method tests")
|
||||||
|
class ToDomainTests {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("Should convert ReviewInfo to Review domain object")
|
||||||
|
void shouldConvertReviewInfoToDomain() {
|
||||||
|
// Given
|
||||||
|
LocalDate date = LocalDate.of(2026, 3, 24);
|
||||||
|
ReviewInfo reviewInfo = new ReviewInfo(5, "tres bon livre", date);
|
||||||
|
|
||||||
|
// When
|
||||||
|
Review result = ReviewConverter.toDomain(reviewInfo);
|
||||||
|
|
||||||
|
// Then
|
||||||
|
assertNotNull(result);
|
||||||
|
assertEquals(reviewInfo.note(), result.getNote());
|
||||||
|
assertEquals(reviewInfo.comment(), result.getComment());
|
||||||
|
assertEquals(reviewInfo.purchaseDate(), result.getPurchaseDate());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
@DisplayName("toDTO() method tests")
|
||||||
|
class ToDTOTests {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("Should convert Review domain object to ReviewDTO with all fields mapped correctly")
|
||||||
|
void shouldConvertReviewToDTO() {
|
||||||
|
LocalDate date = LocalDate.of(2026, 3, 24);
|
||||||
|
Review review = Review.builder()
|
||||||
|
.customerId(UUID.randomUUID())
|
||||||
|
.bookId(UUID.randomUUID())
|
||||||
|
.note(5)
|
||||||
|
.comment("très bon livre")
|
||||||
|
.purchaseDate(date)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
ReviewDTO result = ReviewConverter.toDTO(review);
|
||||||
|
|
||||||
|
assertNotNull(result);
|
||||||
|
assertEquals(review.getCustomerId(), result.getCustomerId());
|
||||||
|
assertEquals(review.getBookId(), result.getBookId());
|
||||||
|
assertEquals(review.getNote(), result.getNote());
|
||||||
|
assertEquals(review.getComment(), result.getComment());
|
||||||
|
assertEquals(review.getPurchaseDate(), result.getPurchaseDate());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("Should preserve empty string values during conversion")
|
||||||
|
void shouldPreserveEmptyStrings() {
|
||||||
|
LocalDate date = LocalDate.of(2026, 3, 24);
|
||||||
|
ReviewInfo reviewInfo = new ReviewInfo(5, "", date);
|
||||||
|
|
||||||
|
Review domainResult = ReviewConverter.toDomain(reviewInfo);
|
||||||
|
ReviewDTO dtoResult = ReviewConverter.toDTO(domainResult);
|
||||||
|
|
||||||
|
assertEquals(5, dtoResult.getNote());
|
||||||
|
assertEquals("", dtoResult.getComment());
|
||||||
|
assertEquals(date, dtoResult.getPurchaseDate());
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user