Feature/create subscription #3

Merged
Marvin AUBERT merged 11 commits from feature/create_subscription into main 2026-06-14 17:42:17 +02:00
10 changed files with 33 additions and 33 deletions
Showing only changes of commit 5adb10101f - Show all commits
@@ -1,13 +1,13 @@
package fr.iut_fbleau.but3.dev62.mylibrary.subscription;
public enum SubscriptionDurationDesired {
public enum DesiredSubscriptionDuration {
THREE(3),
SIX(6),
TWELVE(12);
private final Integer value;
SubscriptionDurationDesired(Integer value) {
DesiredSubscriptionDuration(Integer value) {
this.value = value;
}
@@ -13,7 +13,7 @@ public class SubscriptionDTO {
private UUID subscriptionId;
private UUID customerId;
private Integer subscriptionDurationDesired;
private Integer desiredSubscriptionDuration;
private PaymentMethod paymentMethod;
private LocalDate desiredStartDate;
private LocalDate startDate;
@@ -2,5 +2,5 @@ package fr.iut_fbleau.but3.dev62.mylibrary.subscription;
import java.time.LocalDate;
public record SubscriptionInfo(Integer subscriptionDurationDesired, LocalDate desiredStartDate) {
public record SubscriptionInfo(Integer desiredSubscriptionDuration, LocalDate desiredStartDate) {
}
@@ -19,11 +19,11 @@ public class SubscriptionConverter {
.details(newPaymentMethod.details())
.build();
return Subscription.builder()
.subscriptionDurationDesired(newSubscription.subscriptionDurationDesired())
.desiredSubscriptionDuration(newSubscription.desiredSubscriptionDuration())
.paymentMethod(paymentMethod)
.desiredStartDate(newSubscription.desiredStartDate())
.startDate(newSubscription.desiredStartDate())
.endDate(newSubscription.desiredStartDate().plusMonths(newSubscription.subscriptionDurationDesired()))
.endDate(newSubscription.desiredStartDate().plusMonths(newSubscription.desiredSubscriptionDuration()))
.monthlyAmount(0)
.build();
}
@@ -32,7 +32,7 @@ public class SubscriptionConverter {
return SubscriptionDTO.builder()
.subscriptionId(subscription.getSubscriptionId())
.customerId(subscription.getCustomerId())
.subscriptionDurationDesired(subscription.getSubscriptionDurationDesired())
.desiredSubscriptionDuration(subscription.getDesiredSubscriptionDuration())
.paymentMethod(subscription.getPaymentMethod())
.desiredStartDate(subscription.getDesiredStartDate())
.startDate(subscription.getStartDate())
@@ -12,7 +12,7 @@ public class Subscription {
private UUID subscriptionId;
private UUID customerId;
private Integer subscriptionDurationDesired;
private Integer desiredSubscriptionDuration;
private PaymentMethod paymentMethod;
private LocalDate desiredStartDate;
private LocalDate startDate;
@@ -34,7 +34,7 @@ public class Subscription {
}
public void setEndDate(){
this.endDate = this.desiredStartDate.plusMonths(this.subscriptionDurationDesired);
this.endDate = this.desiredStartDate.plusMonths(this.desiredSubscriptionDuration);
}
public void setDateSubscription(){
@@ -8,7 +8,7 @@ import java.util.Set;
public class SubscriptionValidator {
public static final String SUBSCRIPTION_DURATION_DESIRED_IS_NOT_VALID = "subscriptionDurationDesired will be 3, 6 or 12 by the ENUM file SubscriptionDurationDesired";
public static final String SUBSCRIPTION_DURATION_DESIRED_IS_NOT_VALID = "desiredSubscriptionDuration will be 3, 6 or 12 by the ENUM file SubscriptionDurationDesired";
public static final String DESIRED_START_DATE_CANNOT_BE_BEFORE_TODAY = "desiredStartDate cannot be before today";
private SubscriptionValidator() {
@@ -23,7 +23,7 @@ public class SubscriptionValidator {
private static void validateSubscriptionDurationDesired(SubscriptionInfo newSubscription)
throws NotValidSubscriptionException {
Set<Integer> VALID_DURATIONS = Set.of(3, 6, 12);
if (!VALID_DURATIONS.contains(newSubscription.subscriptionDurationDesired())) {
if (!VALID_DURATIONS.contains(newSubscription.desiredSubscriptionDuration())) {
throw new NotValidSubscriptionException(SUBSCRIPTION_DURATION_DESIRED_IS_NOT_VALID);}
}
@@ -26,7 +26,7 @@ public class SubscriptionConverterTest {
// Given
PaymentMethodInfo paymentMethodInfo = new PaymentMethodInfo(PaymentType.CB.name(), "Maxime Lebreton");
LocalDate desiredStartDate = LocalDate.of(2026, 6, 24);
SubscriptionInfo subscriptionInfo = new SubscriptionInfo(SubscriptionDurationDesired.THREE.getValue(), desiredStartDate);
SubscriptionInfo subscriptionInfo = new SubscriptionInfo(DesiredSubscriptionDuration.THREE.getValue(), desiredStartDate);
LocalDate estimateEndDate = LocalDate.of(2026, 9, 24);
// When
@@ -34,7 +34,7 @@ public class SubscriptionConverterTest {
// Then
assertNotNull(result);
assertEquals(subscriptionInfo.subscriptionDurationDesired(), result.getSubscriptionDurationDesired());
assertEquals(subscriptionInfo.desiredSubscriptionDuration(), result.getDesiredSubscriptionDuration());
assertEquals(paymentMethodInfo.paymentType(), result.getPaymentMethod().getPaymentType());
assertEquals(paymentMethodInfo.details(), result.getPaymentMethod().getDetails());
assertEquals(subscriptionInfo.desiredStartDate(), result.getDesiredStartDate());
@@ -60,7 +60,7 @@ public class SubscriptionConverterTest {
Subscription subscription = Subscription.builder()
.subscriptionId(UUID.randomUUID())
.customerId(UUID.randomUUID())
.subscriptionDurationDesired(SubscriptionDurationDesired.THREE.getValue())
.desiredSubscriptionDuration(DesiredSubscriptionDuration.THREE.getValue())
.paymentMethod(paymentMethod)
.desiredStartDate(desiredStartDate)
.startDate(desiredStartDate)
@@ -73,7 +73,7 @@ public class SubscriptionConverterTest {
assertNotNull(result);
assertEquals(subscription.getSubscriptionId(), result.getSubscriptionId());
assertEquals(subscription.getCustomerId(), result.getCustomerId());
assertEquals(subscription.getSubscriptionDurationDesired(), result.getSubscriptionDurationDesired());
assertEquals(subscription.getDesiredSubscriptionDuration(), result.getDesiredSubscriptionDuration());
assertEquals(subscription.getPaymentMethod().getPaymentType(), result.getPaymentMethod().getPaymentType());
assertEquals(subscription.getPaymentMethod().getDetails(), result.getPaymentMethod().getDetails());
assertEquals(subscription.getDesiredStartDate(), result.getDesiredStartDate());
@@ -95,7 +95,7 @@ public class SubscriptionConverterTest {
Subscription subscription = Subscription.builder()
.subscriptionId(UUID.randomUUID())
.customerId(UUID.randomUUID())
.subscriptionDurationDesired(SubscriptionDurationDesired.THREE.getValue())
.desiredSubscriptionDuration(DesiredSubscriptionDuration.THREE.getValue())
.paymentMethod(paymentMethod)
.desiredStartDate(desiredStartDate)
.startDate(desiredStartDate)
@@ -115,7 +115,7 @@ public class SubscriptionConverterTest {
void shouldPreserveEmptyStrings() {
PaymentMethodInfo paymentMethodInfo = new PaymentMethodInfo(PaymentType.CB.name(), "");
LocalDate desiredStartDate = LocalDate.of(2026, 6, 24);
SubscriptionInfo subscriptionInfo = new SubscriptionInfo(SubscriptionDurationDesired.THREE.getValue(), desiredStartDate);
SubscriptionInfo subscriptionInfo = new SubscriptionInfo(DesiredSubscriptionDuration.THREE.getValue(), desiredStartDate);
Subscription domainResult = SubscriptionConverter.toDomain(subscriptionInfo, paymentMethodInfo);
SubscriptionDTO dtoResult = SubscriptionConverter.toDTO(domainResult);
@@ -1,7 +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 fr.iut_fbleau.but3.dev62.mylibrary.subscription.DesiredSubscriptionDuration;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
@@ -18,7 +18,7 @@ public class SubscriptionTest {
void testSubscriptionBuilder() {
UUID subscriptionId = UUID.randomUUID();
UUID customerId = UUID.randomUUID();
Integer subscriptionDurationDesired = SubscriptionDurationDesired.THREE.getValue();
Integer desiredSubscriptionDuration = DesiredSubscriptionDuration.THREE.getValue();
String paymentType = PaymentType.CB.name();
Object details = new Object();
details = "Maxime Lebreton";
@@ -34,7 +34,7 @@ public class SubscriptionTest {
Subscription subscription = Subscription.builder()
.subscriptionId(subscriptionId)
.customerId(customerId)
.subscriptionDurationDesired(subscriptionDurationDesired)
.desiredSubscriptionDuration(desiredSubscriptionDuration)
.paymentMethod(paymentMethod)
.desiredStartDate(desiredStartDate)
.startDate(startDate)
@@ -44,7 +44,7 @@ public class SubscriptionTest {
assertEquals(subscriptionId, subscription.getSubscriptionId());
assertEquals(customerId, subscription.getCustomerId());
assertEquals(subscriptionDurationDesired, subscription.getSubscriptionDurationDesired());
assertEquals(desiredSubscriptionDuration, subscription.getDesiredSubscriptionDuration());
assertEquals(paymentType, paymentMethod.getPaymentType());
assertEquals(details, paymentMethod.getDetails());
assertEquals(desiredStartDate, subscription.getDesiredStartDate());
@@ -92,12 +92,12 @@ public class SubscriptionTest {
}
@Test
@DisplayName("setEndDate should instantiate EndDate as the same value as the variable desiredStartDate + subscriptionDurationDesired")
@DisplayName("setEndDate should instantiate EndDate as the same value as the variable desiredStartDate + desiredSubscriptionDuration")
void testSetEndDate() {
LocalDate desiredStartDate = LocalDate.of(2026, 6, 24);
LocalDate estimateEndDate = LocalDate.of(2026, 9, 24);
Subscription subscription = Subscription.builder()
.subscriptionDurationDesired(SubscriptionDurationDesired.THREE.getValue())
.desiredSubscriptionDuration(DesiredSubscriptionDuration.THREE.getValue())
.desiredStartDate(desiredStartDate)
.build();
@@ -113,7 +113,7 @@ public class SubscriptionTest {
LocalDate desiredStartDate = LocalDate.of(2026, 6, 24);
LocalDate estimateEndDate = LocalDate.of(2026, 9, 24);
Subscription subscription = Subscription.builder()
.subscriptionDurationDesired(SubscriptionDurationDesired.THREE.getValue())
.desiredSubscriptionDuration(DesiredSubscriptionDuration.THREE.getValue())
.desiredStartDate(desiredStartDate)
.build();
@@ -23,7 +23,7 @@ public class NotValidSubscriptionExceptionTest {
@ParameterizedTest
@ValueSource(strings = {
"subscriptionDurationDesired will be 3, 6 or 12 by the ENUM file SubscriptionDurationDesired",
"desiredSubscriptionDuration will be 3, 6 or 12 by the ENUM file SubscriptionDurationDesired",
"desiredStartDate cannot be before today"
})
@DisplayName("Exception should handle different validation messages")
@@ -1,6 +1,6 @@
package fr.iut_fbleau.but3.dev62.mylibrary.subscription.validator;
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.SubscriptionDurationDesired;
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.DesiredSubscriptionDuration;
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.SubscriptionInfo;
import fr.iut_fbleau.but3.dev62.mylibrary.subscription.exception.NotValidSubscriptionException;
import org.junit.jupiter.api.DisplayName;
@@ -21,7 +21,7 @@ public class SubscriptionValidatorTest {
@DisplayName("Should validate subscription with valid data")
void testValidateValidSubscription() {
LocalDate desiredStartDate = LocalDate.of(2026, 6, 24);
SubscriptionInfo validSubscription = new SubscriptionInfo(SubscriptionDurationDesired.THREE.getValue(), desiredStartDate);
SubscriptionInfo validSubscription = new SubscriptionInfo(DesiredSubscriptionDuration.THREE.getValue(), desiredStartDate);
assertDoesNotThrow(() -> SubscriptionValidator.validate(validSubscription));
}
@@ -31,9 +31,9 @@ public class SubscriptionValidatorTest {
class SubscriptionDurationDesiredValidationTests {
@ParameterizedTest
@EnumSource(value = SubscriptionDurationDesired.class)
void testValidateSubscriptionDurationDesired(SubscriptionDurationDesired subscriptionDurationDesired) {
Integer validSubscriptionDurationDesired = subscriptionDurationDesired.getValue();
@EnumSource(value = DesiredSubscriptionDuration.class)
void testValidateSubscriptionDurationDesired(DesiredSubscriptionDuration desiredSubscriptionDuration) {
Integer validSubscriptionDurationDesired = desiredSubscriptionDuration.getValue();
LocalDate desiredStartDate = LocalDate.of(2026, 6, 24);
SubscriptionInfo validSubscription = new SubscriptionInfo(validSubscriptionDurationDesired, desiredStartDate);
@@ -41,7 +41,7 @@ public class SubscriptionValidatorTest {
}
@Test
@DisplayName("Should throw exception when subscriptionDurationDesired is not 3, 6 or 12")
@DisplayName("Should throw exception when desiredSubscriptionDuration is not 3, 6 or 12")
void testNotValidateSubscriptionDurationDesired() {
Integer notValidSubscriptionDurationDesired = 1 ;
LocalDate desiredStartDate = LocalDate.of(2026, 6, 24);
@@ -63,7 +63,7 @@ public class SubscriptionValidatorTest {
@DisplayName("Should validate when desiredStartDate is before today")
void testValidateDesiredStartDate() {
LocalDate desiredStartDate = LocalDate.now();
SubscriptionInfo validSubscription = new SubscriptionInfo(SubscriptionDurationDesired.THREE.getValue(), desiredStartDate);
SubscriptionInfo validSubscription = new SubscriptionInfo(DesiredSubscriptionDuration.THREE.getValue(), desiredStartDate);
assertDoesNotThrow(() -> SubscriptionValidator.validate(validSubscription));
}
@@ -72,7 +72,7 @@ public class SubscriptionValidatorTest {
@DisplayName("Should throw exception when desiredStartDate is before today")
void testNotValidateDesiredStartDate() {
LocalDate desiredStartDate = LocalDate.of(2026, 3, 24);
SubscriptionInfo validSubscription = new SubscriptionInfo(SubscriptionDurationDesired.THREE.getValue(), desiredStartDate);
SubscriptionInfo validSubscription = new SubscriptionInfo(DesiredSubscriptionDuration.THREE.getValue(), desiredStartDate);
NotValidSubscriptionException exception = assertThrows(
NotValidSubscriptionException.class,