forked from pierront/mylibrary-template
Ajout de la partie Subscription + tests.
Remove des imports en trops.
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.avis;
|
||||
|
||||
import java.util.UUID;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@Builder
|
||||
@Getter
|
||||
public class AvisDTO {
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.avis.entity;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.UUID;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
@Builder
|
||||
@Getter
|
||||
|
||||
+2
-1
@@ -1,11 +1,12 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.avis.repository;
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.avis.entity.Avis;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@NoArgsConstructor
|
||||
public final class AvisRepository {
|
||||
|
||||
@@ -9,6 +9,7 @@ import fr.iut_fbleau.but3.dev62.mylibrary.avis.repository.AvisRepository;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.avis.validator.AvisValidator;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.exception.CustomerNotFoundException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.repository.CustomerRepository;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.book;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
@Builder
|
||||
@Getter
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.book.entity;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
@Builder
|
||||
@Getter
|
||||
|
||||
+2
-1
@@ -1,11 +1,12 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.book.repository;
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.book.entity.Book;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@NoArgsConstructor
|
||||
public final class BookRepository {
|
||||
|
||||
@@ -8,6 +8,7 @@ import fr.iut_fbleau.but3.dev62.mylibrary.book.exception.BookNotFoundException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.book.exception.NotValidBookException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.book.repository.BookRepository;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.book.validator.BookValidator;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package fr.iut_fbleau.but3.dev62.mylibrary.book.validator;
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.book.BookInfo;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.book.exception.NotValidBookException;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public final class BookValidator {
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.customer;
|
||||
|
||||
import java.util.UUID;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@Builder
|
||||
@Getter
|
||||
public class CustomerDTO {
|
||||
|
||||
@@ -2,10 +2,11 @@ package fr.iut_fbleau.but3.dev62.mylibrary.customer.entity;
|
||||
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.exception.IllegalCustomerPointException;
|
||||
import java.util.UUID;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@Builder
|
||||
@Getter
|
||||
public class Customer {
|
||||
|
||||
+2
-1
@@ -1,11 +1,12 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.customer.repository;
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.entity.Customer;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@NoArgsConstructor
|
||||
public final class CustomerRepository {
|
||||
|
||||
@@ -9,6 +9,7 @@ import fr.iut_fbleau.but3.dev62.mylibrary.customer.exception.IllegalCustomerPoin
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.exception.NotValidCustomerException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.repository.CustomerRepository;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.validator.CustomerValidator;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.order;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.UUID;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
@Builder
|
||||
@Getter
|
||||
|
||||
@@ -4,6 +4,7 @@ import fr.iut_fbleau.but3.dev62.mylibrary.order.OrderDTO;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.OrderInfo;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.entity.LigneCommande;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.entity.Order;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.order.entity;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.UUID;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
@Builder
|
||||
@Getter
|
||||
|
||||
@@ -2,11 +2,12 @@ package fr.iut_fbleau.but3.dev62.mylibrary.order.entity;
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.AdresseLivraison;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.ModePaiement;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
@Builder
|
||||
@Getter
|
||||
|
||||
+2
-1
@@ -1,11 +1,12 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.order.repository;
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.entity.Order;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@NoArgsConstructor
|
||||
public final class OrderRepository {
|
||||
|
||||
@@ -15,6 +15,7 @@ import fr.iut_fbleau.but3.dev62.mylibrary.order.entity.Order;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.exception.NotValidOrderException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.repository.OrderRepository;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.validator.OrderValidator;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.subscription;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
@Builder
|
||||
@Getter
|
||||
public class ModePaiement {
|
||||
private final TypePaiement type;
|
||||
private final Object details;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.subscription;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
@Builder
|
||||
@Getter
|
||||
public class SubscriptionDTO {
|
||||
private final UUID abonnementId;
|
||||
private final Date dateDebut;
|
||||
private final Date dateFin;
|
||||
private final BigDecimal montantMensuel;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.subscription;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public enum SubscriptionDuree {
|
||||
M3,M6,M12;
|
||||
|
||||
|
||||
private Integer[] subValues = {3,6,12};
|
||||
private BigDecimal[] subPrices = {BigDecimal.valueOf(9.99), BigDecimal.valueOf(9.50), BigDecimal.valueOf(8.99)};
|
||||
|
||||
public int getValue(){
|
||||
return subValues[this.ordinal()];
|
||||
}
|
||||
|
||||
public BigDecimal getMonthlyPricing(){
|
||||
return subPrices[this.ordinal()];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.subscription;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
public record SubscriptionInfo(
|
||||
UUID clientId,
|
||||
SubscriptionDuree duree,
|
||||
ModePaiement modePaiement,
|
||||
Date dateDebutSouhaitee
|
||||
) {
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.subscription;
|
||||
|
||||
public enum TypePaiement {
|
||||
CB,
|
||||
Paypal
|
||||
}
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.subscription.converter;
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.SubscriptionDTO;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.SubscriptionInfo;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.entity.Subscription;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
public final class SubscriptionConverter {
|
||||
|
||||
private SubscriptionConverter() {
|
||||
}
|
||||
|
||||
public static Subscription toDomain(SubscriptionInfo subscriptionInfo) {
|
||||
Subscription sub = Subscription.builder()
|
||||
.clientId(subscriptionInfo.clientId())
|
||||
.duree(subscriptionInfo.duree())
|
||||
.modePaiement(subscriptionInfo.modePaiement())
|
||||
.dateDebutSouhaitee(subscriptionInfo.dateDebutSouhaitee())
|
||||
.build();
|
||||
sub.setRandomUUID();
|
||||
return sub;
|
||||
}
|
||||
|
||||
public static SubscriptionDTO toDTO(Subscription subscription) {
|
||||
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(subscription.getDateDebutSouhaitee());
|
||||
cal.add(Calendar.MONTH, subscription.getDuree().getValue());
|
||||
|
||||
return SubscriptionDTO.builder()
|
||||
.abonnementId(subscription.getAbonnementId())
|
||||
.dateDebut(subscription.getDateDebutSouhaitee())
|
||||
.dateFin(cal.getTime())
|
||||
.montantMensuel(subscription.getDuree().getMonthlyPricing())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.subscription.entity;
|
||||
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.ModePaiement;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.SubscriptionDuree;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
@Builder
|
||||
@Getter
|
||||
public class Subscription {
|
||||
private UUID abonnementId;
|
||||
private UUID clientId;
|
||||
private SubscriptionDuree duree;
|
||||
private ModePaiement modePaiement;
|
||||
private Date dateDebutSouhaitee;
|
||||
|
||||
public void setRandomUUID() {
|
||||
this.abonnementId = UUID.randomUUID();
|
||||
}
|
||||
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.subscription.exception;
|
||||
|
||||
public class NotValidSubscriptionException extends Exception {
|
||||
|
||||
public NotValidSubscriptionException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.subscription.exception;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.UUID;
|
||||
|
||||
public class SubscriptionNotFoundException extends Exception {
|
||||
|
||||
public static final String THE_SUBSCRIPTION_WITH_ID_DOES_NOT_EXIST_MESSAGE = "The Subscription with id {0} does not exist";
|
||||
|
||||
public SubscriptionNotFoundException(UUID uuid) {
|
||||
super(MessageFormat.format(THE_SUBSCRIPTION_WITH_ID_DOES_NOT_EXIST_MESSAGE, uuid));
|
||||
}
|
||||
}
|
||||
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.subscription.repository;
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.entity.Subscription;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
@NoArgsConstructor
|
||||
public final class SubscriptionRepository {
|
||||
|
||||
private final List<Subscription> subscriptions = new ArrayList<>();
|
||||
|
||||
public List<Subscription> findAll() {
|
||||
return subscriptions;
|
||||
}
|
||||
|
||||
public void deleteAll() {
|
||||
subscriptions.clear();
|
||||
}
|
||||
|
||||
public Subscription save(Subscription newSubscription) {
|
||||
Optional<Subscription> optionalBookWithSameId = this.findByUuid(newSubscription.getAbonnementId());
|
||||
optionalBookWithSameId.ifPresentOrElse(subscriptions::remove, newSubscription::setRandomUUID);
|
||||
this.subscriptions.add(newSubscription);
|
||||
return newSubscription;
|
||||
}
|
||||
|
||||
public Optional<Subscription> findByUuid(UUID uuid) {
|
||||
return this.subscriptions.stream()
|
||||
.filter(subscription -> subscription.getAbonnementId().equals(uuid))
|
||||
.findFirst();
|
||||
}
|
||||
|
||||
public boolean existsById(UUID uuid) {
|
||||
return this.subscriptions.stream()
|
||||
.anyMatch(subscription -> subscription.getAbonnementId().equals(uuid));
|
||||
}
|
||||
|
||||
public Optional<Subscription> findByClientUuid(UUID uuid) {
|
||||
return this.subscriptions.stream()
|
||||
.filter(subscription -> subscription.getClientId().equals(uuid))
|
||||
.findFirst();
|
||||
}
|
||||
|
||||
public void delete(Subscription subscription) {
|
||||
this.subscriptions.remove(subscription);
|
||||
}
|
||||
}
|
||||
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.subscription.usecase;
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.SubscriptionDTO;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.SubscriptionInfo;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.converter.SubscriptionConverter;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.entity.Subscription;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.exception.NotValidSubscriptionException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.exception.SubscriptionNotFoundException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.repository.SubscriptionRepository;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.validator.SubscriptionValidator;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
public final class SubscriptionUseCase {
|
||||
|
||||
private final SubscriptionRepository subscriptionRepository;
|
||||
|
||||
public SubscriptionUseCase(SubscriptionRepository subscriptionRepository) {
|
||||
this.subscriptionRepository = subscriptionRepository;
|
||||
}
|
||||
|
||||
public SubscriptionDTO registerSubscription(SubscriptionInfo subscriptionInfo) throws NotValidSubscriptionException {
|
||||
SubscriptionValidator.validate(subscriptionInfo);
|
||||
Subscription subscriptionToRegister = SubscriptionConverter.toDomain(subscriptionInfo);
|
||||
Subscription registeredSubscription = subscriptionRepository.save(subscriptionToRegister);
|
||||
return SubscriptionConverter.toDTO(registeredSubscription);
|
||||
}
|
||||
|
||||
public Optional<SubscriptionDTO> findSubscriptionByUuid(UUID uuid) {
|
||||
Optional<Subscription> optionalSubscription = subscriptionRepository.findByClientUuid(uuid);
|
||||
return optionalSubscription.map(SubscriptionConverter::toDTO);
|
||||
}
|
||||
|
||||
public SubscriptionDTO updateSubscription(UUID uuid, SubscriptionInfo subscriptionInfo) throws SubscriptionNotFoundException, NotValidSubscriptionException {
|
||||
SubscriptionValidator.validate(subscriptionInfo);
|
||||
Subscription existingSubscription = getSubscriptionIfNotFoundThrowException(uuid);
|
||||
Subscription updatedSubscription = Subscription.builder()
|
||||
.abonnementId(uuid)
|
||||
.clientId(subscriptionInfo.clientId())
|
||||
.duree(subscriptionInfo.duree())
|
||||
.modePaiement(subscriptionInfo.modePaiement())
|
||||
.dateDebutSouhaitee(subscriptionInfo.dateDebutSouhaitee())
|
||||
.build();
|
||||
Subscription saved = subscriptionRepository.save(updatedSubscription);
|
||||
return SubscriptionConverter.toDTO(saved);
|
||||
}
|
||||
|
||||
public void deleteSubscription(UUID uuid) throws SubscriptionNotFoundException {
|
||||
Subscription subscriptionToDelete = getSubscriptionIfNotFoundThrowException(uuid);
|
||||
subscriptionRepository.delete(subscriptionToDelete);
|
||||
}
|
||||
|
||||
private Subscription getSubscriptionIfNotFoundThrowException(UUID uuid) throws SubscriptionNotFoundException {
|
||||
Optional<Subscription> optionalSubscription = subscriptionRepository.findByUuid(uuid);
|
||||
if (optionalSubscription.isEmpty()) {
|
||||
throw new SubscriptionNotFoundException(uuid);
|
||||
}
|
||||
return optionalSubscription.get();
|
||||
}
|
||||
}
|
||||
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.subscription.validator;
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.SubscriptionInfo;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.TypePaiement;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.exception.NotValidSubscriptionException;
|
||||
|
||||
public final class SubscriptionValidator {
|
||||
|
||||
public static final String Client_ID_NOT_VALID = "l'identifient du client est incorect" ;
|
||||
public static final String LA_DUREE_RENSEIGNEE_N_EST_PAS_CORRECTE = "La durée renseignée n'est pas correcte";
|
||||
public static final String LE_TYPE_DE_PAYEMENT_N_EST_PAS_PRIS_EN_CHARGE = "Le type de payement n'est pas pris en charge";
|
||||
public static final String LA_DATE_DE_DEBUT_N_A_PAS_ETE_RENSEIGNEE = "La date de début n'a pas été renseignée";
|
||||
|
||||
private SubscriptionValidator() {
|
||||
}
|
||||
|
||||
public static void validate(SubscriptionInfo bookInfo) throws NotValidSubscriptionException {
|
||||
validateClientID(bookInfo);
|
||||
validateDuree(bookInfo);
|
||||
validateModePaiement(bookInfo);
|
||||
validateDateDebut(bookInfo);
|
||||
}
|
||||
|
||||
private static void validateClientID(SubscriptionInfo bookInfo) throws NotValidSubscriptionException {
|
||||
if (bookInfo.clientId() == null){
|
||||
throw new NotValidSubscriptionException(Client_ID_NOT_VALID);
|
||||
}
|
||||
}
|
||||
|
||||
private static void validateDuree(SubscriptionInfo bookInfo) throws NotValidSubscriptionException {
|
||||
try {
|
||||
if (bookInfo.duree().getValue() != 3 && bookInfo.duree().getValue() != 6 && bookInfo.duree().getValue() != 12){
|
||||
throw new NotValidSubscriptionException(LA_DUREE_RENSEIGNEE_N_EST_PAS_CORRECTE);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new NotValidSubscriptionException(LA_DUREE_RENSEIGNEE_N_EST_PAS_CORRECTE);
|
||||
}
|
||||
}
|
||||
|
||||
private static void validateModePaiement(SubscriptionInfo bookInfo) throws NotValidSubscriptionException{
|
||||
if (bookInfo.modePaiement().getType() != TypePaiement.CB && bookInfo.modePaiement().getType() != TypePaiement.Paypal){
|
||||
throw new NotValidSubscriptionException(LE_TYPE_DE_PAYEMENT_N_EST_PAS_PRIS_EN_CHARGE);
|
||||
}
|
||||
}
|
||||
|
||||
private static void validateDateDebut(SubscriptionInfo bookInfo) throws NotValidSubscriptionException{
|
||||
if (bookInfo.dateDebutSouhaitee() == null){
|
||||
throw new NotValidSubscriptionException(LA_DATE_DE_DEBUT_N_A_PAS_ETE_RENSEIGNEE);
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -5,7 +5,8 @@ import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
class AvisNotFoundExceptionTest {
|
||||
|
||||
|
||||
+2
-1
@@ -5,7 +5,8 @@ import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.ValueSource;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
class NotValidAvisExceptionTest {
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ import fr.iut_fbleau.but3.dev62.mylibrary.avis.AvisInfo;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.avis.entity.Avis;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.avis.exception.NotValidAvisException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.avis.repository.AvisRepository;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.exception.CustomerNotFoundException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.entity.Customer;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.exception.CustomerNotFoundException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.repository.CustomerRepository;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
|
||||
+2
-1
@@ -5,7 +5,8 @@ import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
class BookNotFoundExceptionTest {
|
||||
|
||||
|
||||
+2
-1
@@ -5,7 +5,8 @@ import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.ValueSource;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
class NotValidBookExceptionTest {
|
||||
|
||||
|
||||
@@ -6,11 +6,6 @@ import fr.iut_fbleau.but3.dev62.mylibrary.book.entity.Book;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.book.exception.BookNotFoundException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.book.exception.NotValidBookException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.book.repository.BookRepository;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Nested;
|
||||
@@ -20,6 +15,12 @@ import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
+3
-4
@@ -3,14 +3,13 @@ package fr.iut_fbleau.but3.dev62.mylibrary.customer.converter;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.CustomerDTO;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.CustomerInfo;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.entity.Customer;
|
||||
import java.util.UUID;
|
||||
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;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@DisplayName("CustomerConverter Unit Tests")
|
||||
class CustomerConverterTest {
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.customer.entity;
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.exception.IllegalCustomerPointException;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Nested;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class CustomerTest {
|
||||
|
||||
@Test
|
||||
|
||||
+2
-1
@@ -1,11 +1,12 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.customer.exception;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.CsvSource;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.features;
|
||||
|
||||
import org.junit.platform.suite.api.*;
|
||||
import org.junit.platform.suite.api.ConfigurationParameter;
|
||||
import org.junit.platform.suite.api.IncludeEngines;
|
||||
import org.junit.platform.suite.api.SelectClasspathResource;
|
||||
import org.junit.platform.suite.api.Suite;
|
||||
|
||||
import static io.cucumber.junit.platform.engine.Constants.GLUE_PROPERTY_NAME;
|
||||
import static io.cucumber.junit.platform.engine.Constants.PLUGIN_PROPERTY_NAME;
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.features.avis;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.avis.AvisDTO;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.avis.AvisInfo;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.avis.exception.NotValidAvisException;
|
||||
@@ -18,6 +16,7 @@ import io.cucumber.java.en.And;
|
||||
import io.cucumber.java.en.Given;
|
||||
import io.cucumber.java.en.Then;
|
||||
import io.cucumber.java.en.When;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.HashMap;
|
||||
@@ -25,6 +24,8 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
public class AvisSteps {
|
||||
|
||||
private final CustomerRepository customerRepository = new CustomerRepository();
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.features.book;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
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;
|
||||
@@ -15,13 +13,12 @@ import io.cucumber.java.en.And;
|
||||
import io.cucumber.java.en.Given;
|
||||
import io.cucumber.java.en.Then;
|
||||
import io.cucumber.java.en.When;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
public class BookSteps {
|
||||
|
||||
|
||||
+4
-11
@@ -1,11 +1,5 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.features.client;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.CustomerDTO;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.CustomerInfo;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.entity.Customer;
|
||||
@@ -19,11 +13,10 @@ import io.cucumber.java.en.And;
|
||||
import io.cucumber.java.en.Given;
|
||||
import io.cucumber.java.en.Then;
|
||||
import io.cucumber.java.en.When;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
public class CustomerSteps {
|
||||
|
||||
|
||||
@@ -1,21 +1,11 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.features.order;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.book.entity.Book;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.book.repository.BookRepository;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.entity.Customer;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.exception.CustomerNotFoundException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.repository.CustomerRepository;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.AdresseLivraison;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.LigneCommandeInfo;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.ModePaiement;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.OrderDTO;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.OrderInfo;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.*;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.exception.NotValidOrderException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.repository.OrderRepository;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.usecase.OrderUseCase;
|
||||
@@ -25,6 +15,7 @@ import io.cucumber.java.en.And;
|
||||
import io.cucumber.java.en.Given;
|
||||
import io.cucumber.java.en.Then;
|
||||
import io.cucumber.java.en.When;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.HashMap;
|
||||
@@ -32,6 +23,8 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
public class OrderSteps {
|
||||
|
||||
private final CustomerRepository customerRepository = new CustomerRepository();
|
||||
|
||||
+1
-5
@@ -1,10 +1,6 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.order.converter;
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.AdresseLivraison;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.LigneCommandeInfo;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.ModePaiement;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.OrderDTO;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.OrderInfo;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.*;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.entity.LigneCommande;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.entity.Order;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
|
||||
+2
-1
@@ -5,7 +5,8 @@ import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.ValueSource;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
class NotValidOrderExceptionTest {
|
||||
|
||||
|
||||
+2
-1
@@ -5,7 +5,8 @@ import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
class OrderNotFoundExceptionTest {
|
||||
|
||||
|
||||
+7
-10
@@ -5,19 +5,10 @@ import fr.iut_fbleau.but3.dev62.mylibrary.book.repository.BookRepository;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.entity.Customer;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.exception.CustomerNotFoundException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.customer.repository.CustomerRepository;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.AdresseLivraison;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.LigneCommandeInfo;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.ModePaiement;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.OrderDTO;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.OrderInfo;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.*;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.entity.Order;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.exception.NotValidOrderException;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.order.repository.OrderRepository;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Nested;
|
||||
@@ -27,6 +18,12 @@ import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
package fr.iut_fbleau.but3.dev62.mylibrary.subscription.converter;
|
||||
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.*;
|
||||
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.entity.Subscription;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Nested;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
|
||||
@DisplayName("SubscriptionConverter Unit Tests")
|
||||
class SubscriptionConverterTest {
|
||||
|
||||
@Nested
|
||||
@DisplayName("toDomain() method tests")
|
||||
class ToDomainTests {
|
||||
|
||||
@Test
|
||||
@DisplayName("Should convert SubscriptionInfo to Subscription domain object")
|
||||
void shouldConvertSubscriptionInfoToDomain() {
|
||||
SubscriptionInfo subscriptionInfo = new SubscriptionInfo(
|
||||
UUID.randomUUID(),
|
||||
SubscriptionDuree.M3,
|
||||
ModePaiement.builder()
|
||||
.type(TypePaiement.CB)
|
||||
.details("yes")
|
||||
.build(),
|
||||
new Date()
|
||||
);
|
||||
|
||||
Subscription result = SubscriptionConverter.toDomain(subscriptionInfo);
|
||||
|
||||
assertNotNull(result);
|
||||
assertEquals(subscriptionInfo.clientId(), result.getClientId());
|
||||
assertEquals(subscriptionInfo.duree(), result.getDuree());
|
||||
assertEquals(subscriptionInfo.modePaiement().getType(), result.getModePaiement().getType());
|
||||
assertEquals(subscriptionInfo.modePaiement().getDetails(), result.getModePaiement().getDetails());
|
||||
assertEquals(subscriptionInfo.dateDebutSouhaitee(), result.getDateDebutSouhaitee());
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@DisplayName("toDTO() method tests")
|
||||
class ToDTOTests {
|
||||
|
||||
@Test
|
||||
@DisplayName("Should convert Subscription domain object to SubscriptionDTO with all fields mapped correctly")
|
||||
void shouldConvertSubscriptionToDTO() {
|
||||
Subscription subscription = Subscription.builder()
|
||||
.clientId(UUID.randomUUID())
|
||||
.duree(SubscriptionDuree.M3)
|
||||
.modePaiement(ModePaiement.builder()
|
||||
.type(TypePaiement.CB)
|
||||
.details("yes")
|
||||
.build())
|
||||
.dateDebutSouhaitee(new Date())
|
||||
.build();
|
||||
subscription.setRandomUUID();
|
||||
|
||||
SubscriptionDTO result = SubscriptionConverter.toDTO(subscription);
|
||||
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(subscription.getDateDebutSouhaitee());
|
||||
cal.add(Calendar.MONTH, subscription.getDuree().getValue());
|
||||
|
||||
assertNotNull(result);
|
||||
assertEquals(subscription.getAbonnementId(), result.getAbonnementId());
|
||||
assertEquals(subscription.getDateDebutSouhaitee(), result.getDateDebut());
|
||||
assertEquals(cal.getTime(), result.getDateFin());
|
||||
assertEquals(subscription.getDuree().getMonthlyPricing(), result.getMontantMensuel());
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user