forked from pierront/mylibrary-template
Feature/create subscription #3
+2
-2
@@ -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) {
|
||||
}
|
||||
|
||||
+3
-3
@@ -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())
|
||||
|
||||
+2
-2
@@ -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(){
|
||||
|
||||
+2
-2
@@ -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);}
|
||||
}
|
||||
|
||||
|
||||
+6
-6
@@ -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);
|
||||
|
||||
+7
-7
@@ -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();
|
||||
|
||||
|
||||
+1
-1
@@ -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")
|
||||
|
||||
+8
-8
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user