diff --git a/pom.xml b/pom.xml index 27ec78e..66c9447 100644 --- a/pom.xml +++ b/pom.xml @@ -117,6 +117,11 @@ ${mockito.version} test + + org.junit.jupiter + junit-jupiter + test + diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/review/exception/NotValidReviewException.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/review/exception/NotValidReviewException.java new file mode 100644 index 0000000..241184b --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/review/exception/NotValidReviewException.java @@ -0,0 +1,7 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.review.exception; + +public class NotValidReviewException extends RuntimeException { + public NotValidReviewException(String message) { + super(message); + } +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/review/validator/ReviewValidator.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/review/validator/ReviewValidator.java new file mode 100644 index 0000000..9609c5a --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/review/validator/ReviewValidator.java @@ -0,0 +1,52 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.review.validator; + +import fr.iut_fbleau.but3.dev62.mylibrary.book.exception.NotValidBookException; +import fr.iut_fbleau.but3.dev62.mylibrary.review.ReviewInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.review.exception.NotValidReviewException; + +import java.time.LocalDate; + +public class ReviewValidator { + + public static final String NOTE_CANNOT_BE_LOWER_THAN_1 = "Note is greater than or equal to 1"; + public static final String NOTE_CANNOT_BE_UPPER_THAN_5 = "Note is less than or equal to 5"; + public static final String COMMENT_CANNOT_BE_BLANK = "Comment cannot be blank"; + public static final String PURCHASE_DATE_IS_NOT_VALID = "Date is not valid"; + + public ReviewValidator() { + + } + + public static void validate(ReviewInfo newReview) throws NotValidReviewException { + validateNoteLower1(newReview); + validateNoteUpper5(newReview); + validateComment(newReview); + validatePurchaseDate(newReview); + } + + private static void validateNoteLower1(ReviewInfo newReview) + throws NotValidReviewException { + if (newReview.note() <= 1) { + throw new NotValidReviewException(NOTE_CANNOT_BE_LOWER_THAN_1); + } + } + + private static void validateNoteUpper5(ReviewInfo newReview) + throws NotValidReviewException { + if (newReview.note() >= 5) { + throw new NotValidReviewException("Note is less than or equal to 5"); + } + } + + private static void validateComment(ReviewInfo newReview) throws NotValidReviewException { + if (newReview.comment().isBlank()) { + throw new NotValidReviewException(COMMENT_CANNOT_BE_BLANK); + } + } + + private static void validatePurchaseDate(ReviewInfo newReview) throws NotValidReviewException { + if (newReview.purchaseDate().isAfter(LocalDate.now())) { + throw new NotValidReviewException(PURCHASE_DATE_IS_NOT_VALID); + } + } +} diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/review/exception/NotValidReviewExcpetionTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/review/exception/NotValidReviewExcpetionTest.java index 04d8a9a..f7f3712 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/review/exception/NotValidReviewExcpetionTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/review/exception/NotValidReviewExcpetionTest.java @@ -1,6 +1,5 @@ package fr.iut_fbleau.but3.dev62.mylibrary.review.exception; -import fr.iut_fbleau.but3.dev62.mylibrary.customer.exception.NotValidCustomerException; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/review/validator/ReviewValidatorTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/review/validator/ReviewValidatorTest.java index 0a53b0f..dacdee3 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/review/validator/ReviewValidatorTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/review/validator/ReviewValidatorTest.java @@ -1,8 +1,7 @@ package fr.iut_fbleau.but3.dev62.mylibrary.review.validator; -import fr.iut_fbleau.but3.dev62.mylibrary.book.exception.NotValidBookException; -import fr.iut_fbleau.but3.dev62.mylibrary.book.validator.BookValidator; import fr.iut_fbleau.but3.dev62.mylibrary.review.ReviewInfo; +import fr.iut_fbleau.but3.dev62.mylibrary.review.exception.NotValidReviewException; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -67,7 +66,7 @@ public class ReviewValidatorTest { @DisplayName("Should throw exception when comment is blank") void testValidateBlankComment() { LocalDate purchaseDate = LocalDate.of(2026, 3, 24); - ReviewInfo reviewWithBlankComment = new ReviewInfo(6, "", purchaseDate); + ReviewInfo reviewWithBlankComment = new ReviewInfo(3, "", purchaseDate); NotValidReviewException exception = assertThrows( NotValidReviewException.class, @@ -82,7 +81,7 @@ public class ReviewValidatorTest { @DisplayName("Should throw exception when last name contains only whitespace") void testValidateWhitespaceLastName(String whitespace) { LocalDate purchaseDate = LocalDate.of(2026, 3, 24); - ReviewInfo reviewWithBlankComment = new ReviewInfo(6, whitespace, purchaseDate); + ReviewInfo reviewWithBlankComment = new ReviewInfo(3, whitespace, purchaseDate); NotValidReviewException exception = assertThrows( NotValidReviewException.class,