✅ réussite des test du validator
This commit is contained in:
+7
@@ -0,0 +1,7 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.book.exception;
|
||||
|
||||
public class NotValidBookException extends RuntimeException {
|
||||
public NotValidBookException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.book.validator;
|
||||
|
||||
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.exception.NotValidBookException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.exception.NotValidCustomerException;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class BookValidator {
|
||||
|
||||
public static final String ISBN_IS_NOT_VALID = "Isbn is not valid";
|
||||
public static final String TITLE_CANNOT_BE_BLANK = "Title cannot be blank";
|
||||
public static final String AUTHOR_CANNOT_BE_BLANK = "Author cannot be blank";
|
||||
public static final String EDITOR_CANNOT_BE_BLANK = "Editor cannot be blank";
|
||||
public static final String DATE_IS_NOT_VALID = "Date is not valid";
|
||||
public static final String PRICE_IS_NOT_VALID = "Price is not valid";
|
||||
public static final String STOCK_IS_NOT_VALID = "Stock is not valid";
|
||||
public static final String CATEGORIES_IS_NOT_VALID = "Categories is not valid";
|
||||
public static final String LANGUAGE_CANNOT_BE_BLANK = "Language cannot be blank";
|
||||
|
||||
private BookValidator() {
|
||||
}
|
||||
|
||||
public static void validate(BookInfo newBook) throws NotValidCustomerException {
|
||||
validateISBN(newBook);
|
||||
validateTitle(newBook);
|
||||
validateAuthor(newBook);
|
||||
validateEditor(newBook);
|
||||
validateDate(newBook);
|
||||
}
|
||||
|
||||
public static void validate(BookSalesInfo newBook) throws NotValidCustomerException {
|
||||
validatePrice(newBook);
|
||||
validateStock(newBook);
|
||||
}
|
||||
|
||||
public static void validate(BookDetails newBook) throws NotValidCustomerException {
|
||||
validateCategories(newBook);
|
||||
validateLanguage(newBook);
|
||||
}
|
||||
|
||||
private static void validateISBN(BookInfo newBook) throws NotValidBookException {
|
||||
if (newBook.isbn().isBlank()) {
|
||||
throw new NotValidBookException(ISBN_IS_NOT_VALID);
|
||||
} else if (newBook.isbn().length() != 13) {
|
||||
throw new NotValidBookException(ISBN_IS_NOT_VALID);
|
||||
}
|
||||
}
|
||||
|
||||
private static void validateTitle(BookInfo newBook) throws NotValidBookException {
|
||||
if (newBook.title().isBlank()) {
|
||||
throw new NotValidBookException(TITLE_CANNOT_BE_BLANK);
|
||||
}
|
||||
}
|
||||
|
||||
private static void validateAuthor(BookInfo newBook) throws NotValidBookException {
|
||||
if (newBook.author().isBlank()) {
|
||||
throw new NotValidBookException(AUTHOR_CANNOT_BE_BLANK);
|
||||
}
|
||||
}
|
||||
|
||||
private static void validateEditor(BookInfo newBook) throws NotValidBookException {
|
||||
if (newBook.editor().isBlank()) {
|
||||
throw new NotValidBookException(EDITOR_CANNOT_BE_BLANK);
|
||||
}
|
||||
}
|
||||
|
||||
private static void validateDate(BookInfo newBook) throws NotValidBookException {
|
||||
if (newBook.date().isAfter(LocalDate.now())) {
|
||||
throw new NotValidBookException(DATE_IS_NOT_VALID);
|
||||
}
|
||||
}
|
||||
|
||||
private static void validatePrice(BookSalesInfo newBook) throws NotValidBookException {
|
||||
if (newBook.getPrice() <= 0) {
|
||||
throw new NotValidBookException(PRICE_IS_NOT_VALID);
|
||||
}
|
||||
}
|
||||
|
||||
private static void validateStock(BookSalesInfo newBook) throws NotValidBookException {
|
||||
if (newBook.getStock() < 0) {
|
||||
throw new NotValidBookException(STOCK_IS_NOT_VALID);
|
||||
}
|
||||
}
|
||||
|
||||
private static void validateCategories(BookDetails newBook) throws NotValidBookException {
|
||||
if (newBook.getCategories().isEmpty()) {
|
||||
throw new NotValidBookException(CATEGORIES_IS_NOT_VALID);
|
||||
}else if (CategoriesNotBlank(newBook.getCategories())) {
|
||||
throw new NotValidBookException(CATEGORIES_IS_NOT_VALID);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean CategoriesNotBlank(ArrayList<String> categories){
|
||||
for (String categorie : categories) {
|
||||
if (categorie.isBlank()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static void validateLanguage(BookDetails newBook) throws NotValidBookException {
|
||||
if (newBook.getLanguage().isBlank()) {
|
||||
throw new NotValidBookException(LANGUAGE_CANNOT_BE_BLANK);
|
||||
}
|
||||
}
|
||||
}
|
||||
+8
-7
@@ -3,6 +3,7 @@ package fr.iut_fbleau.but3.dev62.mylibrary.book.validator;
|
||||
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.exception.NotValidBookException;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Nested;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -62,13 +63,13 @@ public class BookValidatorTest {
|
||||
|
||||
@Test
|
||||
@DisplayName("Should throw exception when isbn is blank")
|
||||
void testValidateBlankTitle() {
|
||||
void testValidateBlankISBN() {
|
||||
LocalDate date = LocalDate.of(2026, 3, 24);
|
||||
BookInfo bookWithBlankTitle = new BookInfo("", "La vie de Maxime", "Marvin Aubert", "Kioon", date);
|
||||
BookInfo bookWithBlankISBN = new BookInfo("", "La vie de Maxime", "Marvin Aubert", "Kioon", date);
|
||||
|
||||
NotValidBookException exception = assertThrows(
|
||||
NotValidBookException.class,
|
||||
() -> BookValidator.validate(bookWithBlankTitle)
|
||||
() -> BookValidator.validate(bookWithBlankISBN)
|
||||
);
|
||||
|
||||
assertEquals(BookValidator.ISBN_IS_NOT_VALID, exception.getMessage());
|
||||
@@ -79,11 +80,11 @@ public class BookValidatorTest {
|
||||
@DisplayName("Should throw exception when isbn contains only whitespace")
|
||||
void testValidateWhitespaceISBN(String whitespace) {
|
||||
LocalDate date = LocalDate.of(2026, 3, 24);
|
||||
BookInfo bookWithWhitespaceTitle = new BookInfo(whitespace, "La vie de Maxime", "Marvin Aubert", "Kioon", date);
|
||||
BookInfo bookWithWhitespaceISBN = new BookInfo(whitespace, "La vie de Maxime", "Marvin Aubert", "Kioon", date);
|
||||
|
||||
NotValidBookException exception = assertThrows(
|
||||
NotValidBookException.class,
|
||||
() -> BookValidator.validate(bookWithWhitespaceTitle)
|
||||
() -> BookValidator.validate(bookWithWhitespaceISBN)
|
||||
);
|
||||
|
||||
assertEquals(BookValidator.ISBN_IS_NOT_VALID, exception.getMessage());
|
||||
@@ -94,11 +95,11 @@ public class BookValidatorTest {
|
||||
@DisplayName("Should throw exception when isbn contains only thriteen character")
|
||||
void testValidateThirteenCharacterISBN(String number) {
|
||||
LocalDate date = LocalDate.of(2026, 3, 24);
|
||||
BookInfo bookWithWhitespaceTitle = new BookInfo(number, "La vie de Maxime", "Marvin Aubert", "Kioon", date);
|
||||
BookInfo bookWithNotExactCharacterISBN = new BookInfo(number, "La vie de Maxime", "Marvin Aubert", "Kioon", date);
|
||||
|
||||
NotValidBookException exception = assertThrows(
|
||||
NotValidBookException.class,
|
||||
() -> BookValidator.validate(bookWithWhitespaceTitle)
|
||||
() -> BookValidator.validate(bookWithNotExactCharacterISBN)
|
||||
);
|
||||
|
||||
assertEquals(BookValidator.ISBN_IS_NOT_VALID, exception.getMessage());
|
||||
|
||||
Reference in New Issue
Block a user