From 5d5945b48ba4b337e0b16224bf98506125775861 Mon Sep 17 00:00:00 2001 From: aubert Date: Sat, 13 Jun 2026 16:00:03 +0200 Subject: [PATCH] =?UTF-8?q?:white=5Fcheck=5Fmark:=20r=C3=A9ussite=20des=20?= =?UTF-8?q?tests=20de=20base,=20c'=C3=A9tait=20long?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../subscription/PaymentMethodInfo.java | 4 ++ .../mylibrary/subscription/PaymentType.java | 6 +++ .../subscription/SubscriptionDTO.java | 22 ++++++++++ .../SubscriptionDurationDesired.java | 17 +++++++ .../subscription/SubscriptionInfo.java | 6 +++ .../converter/SubscriptionConverter.java | 43 ++++++++++++++++++ .../subscription/entity/PaymentMethod.java | 12 +++++ .../subscription/entity/Subscription.java | 44 +++++++++++++++++++ .../converter/SubscriptionConverterTest.java | 7 ++- .../entity/PaymentMethodTest.java | 13 +++--- .../subscription/entity/SubscriptionTest.java | 16 ++++--- 11 files changed, 175 insertions(+), 15 deletions(-) create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/PaymentMethodInfo.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/PaymentType.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/SubscriptionDTO.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/SubscriptionDurationDesired.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/SubscriptionInfo.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/converter/SubscriptionConverter.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/entity/PaymentMethod.java create mode 100644 src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/entity/Subscription.java diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/PaymentMethodInfo.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/PaymentMethodInfo.java new file mode 100644 index 0000000..23339a8 --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/PaymentMethodInfo.java @@ -0,0 +1,4 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.subscription; + +public record PaymentMethodInfo(String paymentType, Object details) { +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/PaymentType.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/PaymentType.java new file mode 100644 index 0000000..701fafc --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/PaymentType.java @@ -0,0 +1,6 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.subscription; + +public enum PaymentType { + CB, + PAYPAL; +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/SubscriptionDTO.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/SubscriptionDTO.java new file mode 100644 index 0000000..9637a56 --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/SubscriptionDTO.java @@ -0,0 +1,22 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.subscription; + +import fr.iut_fbleau.but3.dev62.mylibrary.subscription.entity.PaymentMethod; +import lombok.Builder; +import lombok.Getter; + +import java.time.LocalDate; +import java.util.UUID; + +@Builder +@Getter +public class SubscriptionDTO { + + private UUID subscriptionId; + private UUID customerId; + private Integer subscriptionDurationDesired; + private PaymentMethod paymentMethod; + private LocalDate desiredStartDate; + private LocalDate startDate; + private LocalDate endDate; + private double monthlyAmount; +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/SubscriptionDurationDesired.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/SubscriptionDurationDesired.java new file mode 100644 index 0000000..e244fba --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/SubscriptionDurationDesired.java @@ -0,0 +1,17 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.subscription; + +public enum SubscriptionDurationDesired { + THREE(3), + SIX(6), + TWELVE(12); + + private final Integer value; + + SubscriptionDurationDesired(Integer value) { + this.value = value; + } + + public Integer getValue() { + return value; + } +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/SubscriptionInfo.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/SubscriptionInfo.java new file mode 100644 index 0000000..fa0690f --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/SubscriptionInfo.java @@ -0,0 +1,6 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.subscription; + +import java.time.LocalDate; + +public record SubscriptionInfo(Integer subscriptionDurationDesired, LocalDate desiredStartDate) { +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/converter/SubscriptionConverter.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/converter/SubscriptionConverter.java new file mode 100644 index 0000000..f5c00ca --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/converter/SubscriptionConverter.java @@ -0,0 +1,43 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.subscription.converter; + +import fr.iut_fbleau.but3.dev62.mylibrary.customer.CustomerDTO; +import fr.iut_fbleau.but3.dev62.mylibrary.subscription.PaymentMethodInfo; +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.PaymentMethod; +import fr.iut_fbleau.but3.dev62.mylibrary.subscription.entity.Subscription; + +public class SubscriptionConverter { + + private SubscriptionConverter(){ + + } + + public static Subscription toDomain(SubscriptionInfo newSubscription, PaymentMethodInfo newPaymentMethod) { + PaymentMethod paymentMethod = PaymentMethod.builder() + .paymentType(newPaymentMethod.paymentType()) + .details(newPaymentMethod.details()) + .build(); + return Subscription.builder() + .subscriptionDurationDesired(newSubscription.subscriptionDurationDesired()) + .paymentMethod(paymentMethod) + .desiredStartDate(newSubscription.desiredStartDate()) + .startDate(newSubscription.desiredStartDate()) + .endDate(newSubscription.desiredStartDate().plusMonths(newSubscription.subscriptionDurationDesired())) + .monthlyAmount(0) + .build(); + } + + public static SubscriptionDTO toDTO(Subscription subscription) { + return SubscriptionDTO.builder() + .subscriptionId(subscription.getSubscriptionId()) + .customerId(subscription.getCustomerId()) + .subscriptionDurationDesired(subscription.getSubscriptionDurationDesired()) + .paymentMethod(subscription.getPaymentMethod()) + .desiredStartDate(subscription.getDesiredStartDate()) + .startDate(subscription.getStartDate()) + .endDate(subscription.getEndDate()) + .monthlyAmount(subscription.getMonthlyAmount()) + .build(); + } +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/entity/PaymentMethod.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/entity/PaymentMethod.java new file mode 100644 index 0000000..3828ba6 --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/entity/PaymentMethod.java @@ -0,0 +1,12 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.subscription.entity; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +public class PaymentMethod { + + private String paymentType; + private Object details; +} diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/entity/Subscription.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/entity/Subscription.java new file mode 100644 index 0000000..b5e7d32 --- /dev/null +++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/entity/Subscription.java @@ -0,0 +1,44 @@ +package fr.iut_fbleau.but3.dev62.mylibrary.subscription.entity; + +import lombok.Builder; +import lombok.Getter; + +import java.time.LocalDate; +import java.util.UUID; + +@Builder +@Getter +public class Subscription { + + private UUID subscriptionId; + private UUID customerId; + private Integer subscriptionDurationDesired; + private PaymentMethod paymentMethod; + private LocalDate desiredStartDate; + private LocalDate startDate; + private LocalDate endDate; + private double monthlyAmount; + + public void setRandomSubscriptionUUID() { + + this.subscriptionId = UUID.randomUUID(); + } + + public void setRandomCustomerUUID() { + + this.customerId = UUID.randomUUID(); + } + + public void setStartDate(){ + this.startDate = this.desiredStartDate; + } + + public void setEndDate(){ + this.endDate = this.desiredStartDate.plusMonths(this.subscriptionDurationDesired); + } + + public void setDateSubscription(){ + setStartDate(); + setEndDate(); + } +} diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/converter/SubscriptionConverterTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/converter/SubscriptionConverterTest.java index 4554a3c..4097c38 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/converter/SubscriptionConverterTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/converter/SubscriptionConverterTest.java @@ -1,5 +1,8 @@ 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.PaymentMethod; +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; @@ -73,7 +76,7 @@ public class SubscriptionConverterTest { assertEquals(subscription.getSubscriptionDurationDesired(), result.getSubscriptionDurationDesired()); assertEquals(subscription.getPaymentMethod().getPaymentType(), result.getPaymentMethod().getPaymentType()); assertEquals(subscription.getPaymentMethod().getDetails(), result.getPaymentMethod().getDetails()); - assertEquals(subscription.desiredStartDate(), result.getStartDateDesired()); + assertEquals(subscription.getDesiredStartDate(), result.getDesiredStartDate()); assertEquals(subscription.getStartDate(), result.getStartDate()); assertEquals(subscription.getEndDate(), result.getEndDate()); assertEquals(12.03, result.getMonthlyAmount()); @@ -100,7 +103,7 @@ public class SubscriptionConverterTest { .monthlyAmount(12.03) .build(); - SubscriptionDTO result = SubscriptionConverter.toDTO(customer); + SubscriptionDTO result = SubscriptionConverter.toDTO(subscription); assertNotNull(result); assertNull(result.getPaymentMethod().getDetails()); diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/entity/PaymentMethodTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/entity/PaymentMethodTest.java index bf95192..4f184f5 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/entity/PaymentMethodTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/entity/PaymentMethodTest.java @@ -1,5 +1,6 @@ package fr.iut_fbleau.but3.dev62.mylibrary.subscription.entity; +import fr.iut_fbleau.but3.dev62.mylibrary.subscription.PaymentType; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -8,8 +9,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals; public class PaymentMethodTest { @Test - @DisplayName("Builder should create a valid Subscription instance") - void testSubscriptionBuilder() { + @DisplayName("Builder should create a valid PaymentMethod instance") + void testPaymentMethodBuilder() { String paymentType = PaymentType.CB.name(); Object details = new Object(); details = "Maxime Lebreton"; @@ -24,8 +25,8 @@ public class PaymentMethodTest { } @Test - @DisplayName("Builder should create a valid Subscription instance with details as an Integer") - void testSubscriptionBuilder() { + @DisplayName("Builder should create a valid PaymentMethod instance with details as an Integer") + void testPaymentMethodDetailsInteger() { String paymentType = PaymentType.CB.name(); Object details = new Object(); details = 10; @@ -40,8 +41,8 @@ public class PaymentMethodTest { } @Test - @DisplayName("Builder should create a valid Subscription instance with details as an boolean") - void testSubscriptionBuilder() { + @DisplayName("Builder should create a valid PaymentMethod instance with details as an boolean") + void testPaymentMethodDetailsBoolean() { String paymentType = PaymentType.CB.name(); Object details = new Object(); details = true; diff --git a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/entity/SubscriptionTest.java b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/entity/SubscriptionTest.java index 40c2b45..ff34a7c 100644 --- a/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/entity/SubscriptionTest.java +++ b/src/test/java/fr/iut_fbleau/but3/dev62/mylibrary/subscription/entity/SubscriptionTest.java @@ -1,5 +1,7 @@ package fr.iut_fbleau.but3.dev62.mylibrary.subscription.entity; +import fr.iut_fbleau.but3.dev62.mylibrary.subscription.PaymentType; +import fr.iut_fbleau.but3.dev62.mylibrary.subscription.SubscriptionDurationDesired; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -69,7 +71,7 @@ public class SubscriptionTest { Subscription subscription = Subscription.builder().build(); UUID originalId = subscription.getCustomerId(); - Subscription.setRandomCustomerUUID(); + subscription.setRandomCustomerUUID(); assertNotNull(subscription.getCustomerId()); assertNotEquals(originalId, subscription.getCustomerId()); @@ -77,13 +79,13 @@ public class SubscriptionTest { @Test @DisplayName("setStartDate should instantiate StartDate as the same value as the variable desiredStartDate") - void testSetRandomCustomerUUID() { + void testSetStartDate() { LocalDate desiredStartDate = LocalDate.of(2026, 3, 24); Subscription subscription = Subscription.builder() .desiredStartDate(desiredStartDate) .build(); - Subscription.setStartDate(); + subscription.setStartDate(); assertNotNull(subscription.getStartDate()); assertEquals(desiredStartDate, subscription.getStartDate()); @@ -91,7 +93,7 @@ public class SubscriptionTest { @Test @DisplayName("setEndDate should instantiate EndDate as the same value as the variable desiredStartDate + subscriptionDurationDesired") - void testSetRandomCustomerUUID() { + void testSetEndDate() { LocalDate desiredStartDate = LocalDate.of(2026, 3, 24); LocalDate estimateEndDate = LocalDate.of(2026, 6, 24); Subscription subscription = Subscription.builder() @@ -99,7 +101,7 @@ public class SubscriptionTest { .desiredStartDate(desiredStartDate) .build(); - Subscription.setEndDate(); + subscription.setEndDate(); assertNotNull(subscription.getEndDate()); assertEquals(estimateEndDate, subscription.getEndDate()); @@ -107,7 +109,7 @@ public class SubscriptionTest { @Test @DisplayName("setDateSubscription should instantiate StartDate and EndDate ") - void testSetRandomCustomerUUID() { + void testSetDateSubscription() { LocalDate desiredStartDate = LocalDate.of(2026, 3, 24); LocalDate estimateEndDate = LocalDate.of(2026, 6, 24); Subscription subscription = Subscription.builder() @@ -115,7 +117,7 @@ public class SubscriptionTest { .desiredStartDate(desiredStartDate) .build(); - Subscription.setDateSubscription(); + subscription.setDateSubscription(); assertNotNull(subscription.getEndDate()); assertEquals(estimateEndDate, subscription.getEndDate());