From 1ad71f08bc0a7cb05b2eba4b788c2e2b3d3b5498 Mon Sep 17 00:00:00 2001 From: rightpair Date: Thu, 18 Jan 2024 19:08:46 +0900 Subject: [PATCH 1/8] =?UTF-8?q?[feature]=20=EC=BF=A0=ED=8F=B0=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=EB=AC=B8=EC=9E=90=EC=97=B4=20=EA=B0=92=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 설명: - 쿠폰의 상태를 요구사항에 있는 값과 동일하게 변경했습니다. --- .../domain/coupon/entity/type/CouponStatusType.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/coolpeace/domain/coupon/entity/type/CouponStatusType.java b/src/main/java/com/coolpeace/domain/coupon/entity/type/CouponStatusType.java index e8a2a71e..814b194d 100644 --- a/src/main/java/com/coolpeace/domain/coupon/entity/type/CouponStatusType.java +++ b/src/main/java/com/coolpeace/domain/coupon/entity/type/CouponStatusType.java @@ -6,10 +6,10 @@ @Getter @RequiredArgsConstructor public enum CouponStatusType { - EXPOSURE_ON("ON"), - EXPOSURE_OFF("OFF"), - EXPOSURE_WAIT("대기중"), - EXPOSURE_END("종료"), + EXPOSURE_ON("노출 ON"), + EXPOSURE_OFF("노출 OFF"), + EXPOSURE_WAIT("노출 대기중"), + EXPOSURE_END("노출 기간 만료"), DELETED("삭제"); private final String value; From f3acf47b4ec2c9e43d606e337d72ffd62e50bc45 Mon Sep 17 00:00:00 2001 From: rightpair Date: Thu, 18 Jan 2024 20:05:41 +0900 Subject: [PATCH 2/8] =?UTF-8?q?[feature]=20ValuedEnum=20=EC=9D=B8=ED=84=B0?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 설명: - enum에서 value 필드의 값을 찾는 메소드를 포함한 인터페이스를 추가했습니다. --- .../request/type/SearchCouponDateFilterType.java | 14 ++++++++++++-- .../type/SearchCouponStatusFilterType.java | 15 +++++++++++++-- .../coupon/entity/type/CouponIssuerType.java | 3 ++- .../domain/coupon/entity/type/CouponRoomType.java | 10 +++++----- .../coupon/entity/type/CouponStatusType.java | 3 ++- .../domain/coupon/entity/type/CustomerType.java | 9 ++++----- .../domain/coupon/entity/type/DiscountType.java | 9 ++++----- .../com/coolpeace/global/common/ValuedEnum.java | 15 +++++++++++++++ 8 files changed, 57 insertions(+), 21 deletions(-) create mode 100644 src/main/java/com/coolpeace/global/common/ValuedEnum.java diff --git a/src/main/java/com/coolpeace/domain/coupon/dto/request/type/SearchCouponDateFilterType.java b/src/main/java/com/coolpeace/domain/coupon/dto/request/type/SearchCouponDateFilterType.java index 17b4b702..6f85f2da 100644 --- a/src/main/java/com/coolpeace/domain/coupon/dto/request/type/SearchCouponDateFilterType.java +++ b/src/main/java/com/coolpeace/domain/coupon/dto/request/type/SearchCouponDateFilterType.java @@ -1,5 +1,15 @@ package com.coolpeace.domain.coupon.dto.request.type; -public enum SearchCouponDateFilterType { - YEAR, THREE_MONTHS, SIX_MONTHS +import com.coolpeace.global.common.ValuedEnum; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public enum SearchCouponDateFilterType implements ValuedEnum { + YEAR("1년"), + THREE_MONTHS("3개월"), + SIX_MONTHS("6개월"); + + private final String value; } diff --git a/src/main/java/com/coolpeace/domain/coupon/dto/request/type/SearchCouponStatusFilterType.java b/src/main/java/com/coolpeace/domain/coupon/dto/request/type/SearchCouponStatusFilterType.java index 81ad0284..05157084 100644 --- a/src/main/java/com/coolpeace/domain/coupon/dto/request/type/SearchCouponStatusFilterType.java +++ b/src/main/java/com/coolpeace/domain/coupon/dto/request/type/SearchCouponStatusFilterType.java @@ -1,5 +1,16 @@ package com.coolpeace.domain.coupon.dto.request.type; -public enum SearchCouponStatusFilterType { - All, EXPOSURE_ON, EXPOSURE_OFF, EXPIRED +import com.coolpeace.global.common.ValuedEnum; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public enum SearchCouponStatusFilterType implements ValuedEnum { + All("전체"), + EXPOSURE_ON("노출 ON"), + EXPOSURE_OFF("노출 OFF"), + EXPIRED("만료"); + + private final String value; } diff --git a/src/main/java/com/coolpeace/domain/coupon/entity/type/CouponIssuerType.java b/src/main/java/com/coolpeace/domain/coupon/entity/type/CouponIssuerType.java index debe45f2..d7720cf9 100644 --- a/src/main/java/com/coolpeace/domain/coupon/entity/type/CouponIssuerType.java +++ b/src/main/java/com/coolpeace/domain/coupon/entity/type/CouponIssuerType.java @@ -1,11 +1,12 @@ package com.coolpeace.domain.coupon.entity.type; +import com.coolpeace.global.common.ValuedEnum; import lombok.Getter; import lombok.RequiredArgsConstructor; @Getter @RequiredArgsConstructor -public enum CouponIssuerType { +public enum CouponIssuerType implements ValuedEnum { YANOLJA("YC"), OWNER("CC"); diff --git a/src/main/java/com/coolpeace/domain/coupon/entity/type/CouponRoomType.java b/src/main/java/com/coolpeace/domain/coupon/entity/type/CouponRoomType.java index 8a51744f..d5ebb42c 100644 --- a/src/main/java/com/coolpeace/domain/coupon/entity/type/CouponRoomType.java +++ b/src/main/java/com/coolpeace/domain/coupon/entity/type/CouponRoomType.java @@ -1,15 +1,15 @@ package com.coolpeace.domain.coupon.entity.type; +import com.coolpeace.global.common.ValuedEnum; import lombok.Getter; import lombok.RequiredArgsConstructor; @Getter @RequiredArgsConstructor -public enum CouponRoomType { - RENTAL(0, "대실"), - LODGE(1, "숙박"), - TWO_NIGHT(2, "2박 이상"); +public enum CouponRoomType implements ValuedEnum { + RENTAL("대실"), + LODGE("숙박"), + TWO_NIGHT("2박 이상"); - private final Integer index; private final String value; } diff --git a/src/main/java/com/coolpeace/domain/coupon/entity/type/CouponStatusType.java b/src/main/java/com/coolpeace/domain/coupon/entity/type/CouponStatusType.java index 814b194d..ed39d0d2 100644 --- a/src/main/java/com/coolpeace/domain/coupon/entity/type/CouponStatusType.java +++ b/src/main/java/com/coolpeace/domain/coupon/entity/type/CouponStatusType.java @@ -1,11 +1,12 @@ package com.coolpeace.domain.coupon.entity.type; +import com.coolpeace.global.common.ValuedEnum; import lombok.Getter; import lombok.RequiredArgsConstructor; @Getter @RequiredArgsConstructor -public enum CouponStatusType { +public enum CouponStatusType implements ValuedEnum { EXPOSURE_ON("노출 ON"), EXPOSURE_OFF("노출 OFF"), EXPOSURE_WAIT("노출 대기중"), diff --git a/src/main/java/com/coolpeace/domain/coupon/entity/type/CustomerType.java b/src/main/java/com/coolpeace/domain/coupon/entity/type/CustomerType.java index e816e5a8..fe59a66e 100644 --- a/src/main/java/com/coolpeace/domain/coupon/entity/type/CustomerType.java +++ b/src/main/java/com/coolpeace/domain/coupon/entity/type/CustomerType.java @@ -1,16 +1,15 @@ package com.coolpeace.domain.coupon.entity.type; +import com.coolpeace.global.common.ValuedEnum; import lombok.Getter; +import lombok.RequiredArgsConstructor; @Getter -public enum CustomerType { +@RequiredArgsConstructor +public enum CustomerType implements ValuedEnum { ALL_CLIENT("모든 고객"), FIRST_CLIENT("첫방문 고객"), RE_CLIENT("재방문 고객"); private final String value; - - CustomerType(String value) { - this.value = value; - } } diff --git a/src/main/java/com/coolpeace/domain/coupon/entity/type/DiscountType.java b/src/main/java/com/coolpeace/domain/coupon/entity/type/DiscountType.java index dacbc5a6..553b04ae 100644 --- a/src/main/java/com/coolpeace/domain/coupon/entity/type/DiscountType.java +++ b/src/main/java/com/coolpeace/domain/coupon/entity/type/DiscountType.java @@ -1,15 +1,14 @@ package com.coolpeace.domain.coupon.entity.type; +import com.coolpeace.global.common.ValuedEnum; import lombok.Getter; +import lombok.RequiredArgsConstructor; @Getter -public enum DiscountType { +@RequiredArgsConstructor +public enum DiscountType implements ValuedEnum { FIXED_RATE("정률"), FIXED_PRICE("정액"); private final String value; - - DiscountType(String value) { - this.value = value; - } } diff --git a/src/main/java/com/coolpeace/global/common/ValuedEnum.java b/src/main/java/com/coolpeace/global/common/ValuedEnum.java new file mode 100644 index 00000000..4ebfb4e0 --- /dev/null +++ b/src/main/java/com/coolpeace/global/common/ValuedEnum.java @@ -0,0 +1,15 @@ +package com.coolpeace.global.common; + + +public interface ValuedEnum { + String getValue(); + + static & ValuedEnum> E of(Class enumClass, String value) { + for (E e : enumClass.getEnumConstants()) { + if (e.getValue().equals(value)) { + return e; + } + } + throw new IllegalArgumentException(); + } +} From f9b4ebade5317bb2c0589cec099e118533b0d826 Mon Sep 17 00:00:00 2001 From: rightpair Date: Thu, 18 Jan 2024 20:22:39 +0900 Subject: [PATCH 3/8] =?UTF-8?q?[feature]=20Converter=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 설명: - 파라미터를 String으로 모두 바꾸려 합니다. - 따라서 Converter는 필요가 없어졌으므로 삭제했습니다. --- .../CouponRoomTypeRequestConverter.java | 11 ---------- .../CustomerTypeRequestConverter.java | 11 ---------- .../converter/DayOfWeekRequestConverter.java | 12 ----------- .../DiscountTypeRequestConverter.java | 11 ---------- .../global/config/ConverterConfig.java | 21 ------------------- 5 files changed, 66 deletions(-) delete mode 100644 src/main/java/com/coolpeace/domain/coupon/dto/request/converter/CouponRoomTypeRequestConverter.java delete mode 100644 src/main/java/com/coolpeace/domain/coupon/dto/request/converter/CustomerTypeRequestConverter.java delete mode 100644 src/main/java/com/coolpeace/domain/coupon/dto/request/converter/DayOfWeekRequestConverter.java delete mode 100644 src/main/java/com/coolpeace/domain/coupon/dto/request/converter/DiscountTypeRequestConverter.java delete mode 100644 src/main/java/com/coolpeace/global/config/ConverterConfig.java diff --git a/src/main/java/com/coolpeace/domain/coupon/dto/request/converter/CouponRoomTypeRequestConverter.java b/src/main/java/com/coolpeace/domain/coupon/dto/request/converter/CouponRoomTypeRequestConverter.java deleted file mode 100644 index ec6d3376..00000000 --- a/src/main/java/com/coolpeace/domain/coupon/dto/request/converter/CouponRoomTypeRequestConverter.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.coolpeace.domain.coupon.dto.request.converter; - -import com.coolpeace.domain.coupon.entity.type.CouponRoomType; -import org.springframework.core.convert.converter.Converter; - -public class CouponRoomTypeRequestConverter implements Converter { - @Override - public CouponRoomType convert(String couponRoomTypeString) { - return CouponRoomType.valueOf(couponRoomTypeString.toUpperCase()); - } -} diff --git a/src/main/java/com/coolpeace/domain/coupon/dto/request/converter/CustomerTypeRequestConverter.java b/src/main/java/com/coolpeace/domain/coupon/dto/request/converter/CustomerTypeRequestConverter.java deleted file mode 100644 index a54591c8..00000000 --- a/src/main/java/com/coolpeace/domain/coupon/dto/request/converter/CustomerTypeRequestConverter.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.coolpeace.domain.coupon.dto.request.converter; - -import com.coolpeace.domain.coupon.entity.type.CustomerType; -import org.springframework.core.convert.converter.Converter; - -public class CustomerTypeRequestConverter implements Converter { - @Override - public CustomerType convert(String customerTypeString) { - return CustomerType.valueOf(customerTypeString.toUpperCase()); - } -} diff --git a/src/main/java/com/coolpeace/domain/coupon/dto/request/converter/DayOfWeekRequestConverter.java b/src/main/java/com/coolpeace/domain/coupon/dto/request/converter/DayOfWeekRequestConverter.java deleted file mode 100644 index adad2dfd..00000000 --- a/src/main/java/com/coolpeace/domain/coupon/dto/request/converter/DayOfWeekRequestConverter.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.coolpeace.domain.coupon.dto.request.converter; - -import org.springframework.core.convert.converter.Converter; - -import java.time.DayOfWeek; - -public class DayOfWeekRequestConverter implements Converter { - @Override - public DayOfWeek convert(String discountTypeString) { - return DayOfWeek.valueOf(discountTypeString.toUpperCase()); - } -} diff --git a/src/main/java/com/coolpeace/domain/coupon/dto/request/converter/DiscountTypeRequestConverter.java b/src/main/java/com/coolpeace/domain/coupon/dto/request/converter/DiscountTypeRequestConverter.java deleted file mode 100644 index 47cc54d0..00000000 --- a/src/main/java/com/coolpeace/domain/coupon/dto/request/converter/DiscountTypeRequestConverter.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.coolpeace.domain.coupon.dto.request.converter; - -import com.coolpeace.domain.coupon.entity.type.DiscountType; -import org.springframework.core.convert.converter.Converter; - -public class DiscountTypeRequestConverter implements Converter { - @Override - public DiscountType convert(String discountTypeString) { - return DiscountType.valueOf(discountTypeString.toUpperCase()); - } -} diff --git a/src/main/java/com/coolpeace/global/config/ConverterConfig.java b/src/main/java/com/coolpeace/global/config/ConverterConfig.java deleted file mode 100644 index ea6545c2..00000000 --- a/src/main/java/com/coolpeace/global/config/ConverterConfig.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.coolpeace.global.config; - -import com.coolpeace.domain.coupon.dto.request.converter.CouponRoomTypeRequestConverter; -import com.coolpeace.domain.coupon.dto.request.converter.CustomerTypeRequestConverter; -import com.coolpeace.domain.coupon.dto.request.converter.DayOfWeekRequestConverter; -import com.coolpeace.domain.coupon.dto.request.converter.DiscountTypeRequestConverter; -import org.springframework.context.annotation.Configuration; -import org.springframework.format.FormatterRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -@Configuration -public class ConverterConfig implements WebMvcConfigurer { - @Override - public void addFormatters(FormatterRegistry registry) { - // coupon requests - registry.addConverter(new CustomerTypeRequestConverter()); - registry.addConverter(new DiscountTypeRequestConverter()); - registry.addConverter(new CouponRoomTypeRequestConverter()); - registry.addConverter(new DayOfWeekRequestConverter()); - } -} From 299f6962f5bdb6f5febd48ddad6ab64851245cbb Mon Sep 17 00:00:00 2001 From: rightpair Date: Thu, 18 Jan 2024 23:34:55 +0900 Subject: [PATCH 4/8] =?UTF-8?q?[feature]=20ValuedEnumValidator=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 설명: - 새로 만든 ValuedEnum의 getValue로 유효성 검증을 하기 위해 ValuedEnumValidator를 수정했습니다. --- .../coolpeace/global/common/validator/ValidEnum.java | 2 +- .../{EnumValidator.java => ValuedEnumValidator.java} | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) rename src/main/java/com/coolpeace/global/common/validator/{EnumValidator.java => ValuedEnumValidator.java} (51%) diff --git a/src/main/java/com/coolpeace/global/common/validator/ValidEnum.java b/src/main/java/com/coolpeace/global/common/validator/ValidEnum.java index ab84d20a..63d74e1b 100644 --- a/src/main/java/com/coolpeace/global/common/validator/ValidEnum.java +++ b/src/main/java/com/coolpeace/global/common/validator/ValidEnum.java @@ -8,7 +8,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -@Constraint(validatedBy = EnumValidator.class) +@Constraint(validatedBy = ValuedEnumValidator.class) @Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) public @interface ValidEnum { diff --git a/src/main/java/com/coolpeace/global/common/validator/EnumValidator.java b/src/main/java/com/coolpeace/global/common/validator/ValuedEnumValidator.java similarity index 51% rename from src/main/java/com/coolpeace/global/common/validator/EnumValidator.java rename to src/main/java/com/coolpeace/global/common/validator/ValuedEnumValidator.java index 34609df4..733ccfc7 100644 --- a/src/main/java/com/coolpeace/global/common/validator/EnumValidator.java +++ b/src/main/java/com/coolpeace/global/common/validator/ValuedEnumValidator.java @@ -1,9 +1,10 @@ package com.coolpeace.global.common.validator; +import com.coolpeace.global.common.ValuedEnum; import jakarta.validation.ConstraintValidator; import jakarta.validation.ConstraintValidatorContext; -public class EnumValidator implements ConstraintValidator> { +public class ValuedEnumValidator implements ConstraintValidator { private ValidEnum annotation; @Override @@ -12,11 +13,11 @@ public void initialize(ValidEnum constraintAnnotation) { } @Override - public boolean isValid(Enum value, ConstraintValidatorContext context) { - Object[] enumValues = this.annotation.enumClass().getEnumConstants(); + public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) { + ValuedEnum[] enumValues = (ValuedEnum[]) this.annotation.enumClass().getEnumConstants(); if (enumValues != null) { - for (Object enumValue : enumValues) { - if (value == enumValue) { + for (ValuedEnum enumValue : enumValues) { + if (enumValue.getValue().equals(value)) { return true; } } From 7974f384efb642b7f10f97e9d13214fbf5c9469a Mon Sep 17 00:00:00 2001 From: rightpair Date: Thu, 18 Jan 2024 23:35:10 +0900 Subject: [PATCH 5/8] =?UTF-8?q?[feature]=20DayOfWeekUtil=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/common/DayOfWeekUtil.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/main/java/com/coolpeace/global/common/DayOfWeekUtil.java diff --git a/src/main/java/com/coolpeace/global/common/DayOfWeekUtil.java b/src/main/java/com/coolpeace/global/common/DayOfWeekUtil.java new file mode 100644 index 00000000..0371f5d9 --- /dev/null +++ b/src/main/java/com/coolpeace/global/common/DayOfWeekUtil.java @@ -0,0 +1,40 @@ +package com.coolpeace.global.common; + +import java.time.DayOfWeek; +import java.util.List; + +public class DayOfWeekUtil { + + public static DayOfWeek fromDayOfWeekString(String str) { + return switch (str) { + case "월" -> DayOfWeek.MONDAY; + case "화" -> DayOfWeek.TUESDAY; + case "수" -> DayOfWeek.WEDNESDAY; + case "목" -> DayOfWeek.THURSDAY; + case "금" -> DayOfWeek.FRIDAY; + case "토" -> DayOfWeek.SATURDAY; + case "일" -> DayOfWeek.SUNDAY; + default -> throw new IllegalStateException("Unexpected value: " + str); + }; + } + + public static String fromDayOfWeek(DayOfWeek dayOfWeek) { + return switch (dayOfWeek) { + case MONDAY -> "월"; + case TUESDAY -> "화"; + case WEDNESDAY -> "수"; + case THURSDAY -> "목"; + case FRIDAY -> "금"; + case SATURDAY -> "토"; + case SUNDAY -> "일"; + }; + } + + public static List fromDayOfWeekStrings(List strings) { + return strings.stream().map(DayOfWeekUtil::fromDayOfWeekString).toList(); + } + + public static List fromDayOfWeeks(List dayOfWeeks) { + return dayOfWeeks.stream().map(DayOfWeekUtil::fromDayOfWeek).toList(); + } +} From df35091feec0e9719bf67166cde58db04d51aeda Mon Sep 17 00:00:00 2001 From: rightpair Date: Thu, 18 Jan 2024 23:36:10 +0900 Subject: [PATCH 6/8] =?UTF-8?q?[feature]=20Request=EC=99=80=20Params=20?= =?UTF-8?q?=EA=B0=9D=EC=B2=B4=EC=9D=98=20enum=20=ED=95=84=EB=93=9C?= =?UTF-8?q?=EB=A5=BC=20=EB=AA=A8=EB=91=90=20String=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 설명 - #132 를 참고하세요. - 문자열로 요청을 받기 위해서는 타입을 문자열로 지정해줘야함을 알게되었습니다. --- .../coupon/dto/request/CouponExposeRequest.java | 2 +- .../coupon/dto/request/CouponRegisterRequest.java | 9 ++++----- .../coupon/dto/request/CouponUpdateRequest.java | 15 +++++++-------- .../coupon/dto/request/SearchCouponParams.java | 4 ++-- 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/coolpeace/domain/coupon/dto/request/CouponExposeRequest.java b/src/main/java/com/coolpeace/domain/coupon/dto/request/CouponExposeRequest.java index e741575d..a262554b 100644 --- a/src/main/java/com/coolpeace/domain/coupon/dto/request/CouponExposeRequest.java +++ b/src/main/java/com/coolpeace/domain/coupon/dto/request/CouponExposeRequest.java @@ -8,6 +8,6 @@ public record CouponExposeRequest( @NotNull(message = "쿠폰의 상태를 입력해야 합니다.") @ValidEnum(enumClass = CouponStatusType.class, message = "올바른 쿠폰 상태를 입력해야 합니다.") - CouponStatusType couponStatus + String couponStatus ) { } diff --git a/src/main/java/com/coolpeace/domain/coupon/dto/request/CouponRegisterRequest.java b/src/main/java/com/coolpeace/domain/coupon/dto/request/CouponRegisterRequest.java index 37b079a4..50383b53 100644 --- a/src/main/java/com/coolpeace/domain/coupon/dto/request/CouponRegisterRequest.java +++ b/src/main/java/com/coolpeace/domain/coupon/dto/request/CouponRegisterRequest.java @@ -9,7 +9,6 @@ import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; -import java.time.DayOfWeek; import java.time.LocalDate; import java.util.List; @@ -19,19 +18,19 @@ public record CouponRegisterRequest( String title, @NotNull(message = "고객의 유형을 선택해야 합니다.") @ValidEnum(enumClass = CustomerType.class, message = "올바르지 않은 고객의 유형입니다.") - CustomerType customerType, + String customerType, // 할인 정책 @NotNull(message = "할인의 유형을 선택해야 합니다.") @ValidEnum(enumClass = DiscountType.class, message = "올바르지 않은 할인의 유형입니다.") - DiscountType discountType, + String discountType, @NotNull(message = "할인의 값을 입력해야 합니다.") Integer discountValue, // 객실 유형 @NotNull(message = "객실의 유형을 선택해야 합니다.") @ValidEnum(enumClass = CouponRoomType.class, message = "올바르지 않은 객실의 유형입니다.") - CouponRoomType couponRoomType, + String couponRoomType, // 숙소 ID @NotNull(message = "숙박업체의 ID를 입력해야 합니다.") @@ -44,7 +43,7 @@ public record CouponRegisterRequest( // 쿠폰 사용 조건 Integer minimumReservationPrice, - List couponUseConditionDays, + List couponUseConditionDays, // 노출 날짜 @NotNull(message = "노출 시작 날짜를 입력해야 합니다.") diff --git a/src/main/java/com/coolpeace/domain/coupon/dto/request/CouponUpdateRequest.java b/src/main/java/com/coolpeace/domain/coupon/dto/request/CouponUpdateRequest.java index db435ee0..a60d80e3 100644 --- a/src/main/java/com/coolpeace/domain/coupon/dto/request/CouponUpdateRequest.java +++ b/src/main/java/com/coolpeace/domain/coupon/dto/request/CouponUpdateRequest.java @@ -1,26 +1,25 @@ package com.coolpeace.domain.coupon.dto.request; -import com.coolpeace.domain.coupon.entity.type.CouponRoomType; -import com.coolpeace.domain.coupon.entity.type.CustomerType; -import com.coolpeace.domain.coupon.entity.type.DiscountType; import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.validation.constraints.NotNull; -import java.time.DayOfWeek; import java.time.LocalDate; import java.util.List; public record CouponUpdateRequest( @NotNull(message = "숙박업체의 ID를 입력해야 합니다.") Long accommodationId, - CustomerType customerType, - DiscountType discountType, +// @ValidEnum(enumClass = CustomerType.class, message = "올바르지 않은 고객의 유형입니다.") + String customerType, +// @ValidEnum(enumClass = DiscountType.class, message = "올바르지 않은 고객의 유형입니다.") + String discountType, Integer discountValue, - CouponRoomType couponRoomType, +// @ValidEnum(enumClass = CouponRoomType.class, message = "올바르지 않은 고객의 유형입니다.") + String couponRoomType, Boolean registerAllRoom, List registerRooms, Integer minimumReservationPrice, - List couponUseConditionDays, + List couponUseConditionDays, @JsonFormat(pattern = "yyyy-MM-dd") LocalDate exposureStartDate, @JsonFormat(pattern = "yyyy-MM-dd") diff --git a/src/main/java/com/coolpeace/domain/coupon/dto/request/SearchCouponParams.java b/src/main/java/com/coolpeace/domain/coupon/dto/request/SearchCouponParams.java index 06f0b460..3a6af01f 100644 --- a/src/main/java/com/coolpeace/domain/coupon/dto/request/SearchCouponParams.java +++ b/src/main/java/com/coolpeace/domain/coupon/dto/request/SearchCouponParams.java @@ -6,9 +6,9 @@ public record SearchCouponParams( @ValidEnum(enumClass = SearchCouponStatusFilterType.class, message = "올바른 쿠폰 상태 값을 입력해주세요.") - SearchCouponStatusFilterType status, + String status, String title, @ValidEnum(enumClass = SearchCouponDateFilterType.class, message = "올바른 쿠폰 날짜 값을 입력해주세요.") - SearchCouponDateFilterType date + String date ) { } From 2ae0bc11f9c4ff61724c5ebf736de77f36b35d2a Mon Sep 17 00:00:00 2001 From: rightpair Date: Thu, 18 Jan 2024 23:37:35 +0900 Subject: [PATCH 7/8] =?UTF-8?q?[feature]=20Request,=20Params=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=EC=97=90=20=EC=9D=98=ED=95=9C=20=EC=84=9C=EB=B9=84?= =?UTF-8?q?=EC=8A=A4=20=EB=B0=8F=20=EC=9D=B8=ED=94=84=EB=9D=BC=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/CouponRepositoryImpl.java | 17 ++++--- .../domain/coupon/service/CouponService.java | 47 +++++++++++++------ 2 files changed, 43 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/coolpeace/domain/coupon/repository/CouponRepositoryImpl.java b/src/main/java/com/coolpeace/domain/coupon/repository/CouponRepositoryImpl.java index a6e15ff0..a2004c05 100644 --- a/src/main/java/com/coolpeace/domain/coupon/repository/CouponRepositoryImpl.java +++ b/src/main/java/com/coolpeace/domain/coupon/repository/CouponRepositoryImpl.java @@ -1,8 +1,11 @@ package com.coolpeace.domain.coupon.repository; import com.coolpeace.domain.coupon.dto.request.SearchCouponParams; +import com.coolpeace.domain.coupon.dto.request.type.SearchCouponDateFilterType; +import com.coolpeace.domain.coupon.dto.request.type.SearchCouponStatusFilterType; import com.coolpeace.domain.coupon.entity.Coupon; import com.coolpeace.domain.coupon.entity.type.CouponStatusType; +import com.coolpeace.global.common.ValuedEnum; import com.querydsl.core.BooleanBuilder; import com.querydsl.core.Tuple; import com.querydsl.jpa.impl.JPAQuery; @@ -22,6 +25,8 @@ import static com.coolpeace.domain.coupon.entity.QCoupon.coupon; import static com.coolpeace.domain.coupon.entity.QCouponRooms.couponRooms; +import static com.coolpeace.domain.coupon.entity.type.CouponStatusType.EXPOSURE_OFF; +import static com.coolpeace.domain.coupon.entity.type.CouponStatusType.EXPOSURE_ON; import static com.coolpeace.domain.room.entity.QRoom.room; public class CouponRepositoryImpl extends QuerydslRepositorySupport implements CouponRepositoryCustom { @@ -40,9 +45,9 @@ public Page findAllCoupons(Long memberId, SearchCouponParams params, Pag // 쿠폰 상태 if (params.status() != null) { - searchCouponPredicate.and(switch (params.status()) { - case EXPOSURE_ON -> coupon.couponStatus.eq(CouponStatusType.EXPOSURE_ON); - case EXPOSURE_OFF -> coupon.couponStatus.eq(CouponStatusType.EXPOSURE_OFF) + searchCouponPredicate.and(switch (ValuedEnum.of(SearchCouponStatusFilterType.class, params.status())) { + case EXPOSURE_ON -> coupon.couponStatus.eq(EXPOSURE_ON); + case EXPOSURE_OFF -> coupon.couponStatus.eq(EXPOSURE_OFF) .or(coupon.couponStatus.eq(CouponStatusType.EXPOSURE_WAIT)); case EXPIRED -> coupon.couponStatus.eq(CouponStatusType.EXPOSURE_END) .or(coupon.couponStatus.eq(CouponStatusType.DELETED)); @@ -57,7 +62,7 @@ public Page findAllCoupons(Long memberId, SearchCouponParams params, Pag // 쿠폰 날짜 if (params.date() != null) { - searchCouponPredicate.and(switch (params.date()) { + searchCouponPredicate.and(switch (ValuedEnum.of(SearchCouponDateFilterType.class, params.date())) { case THREE_MONTHS -> coupon.createdAt.after(LocalDateTime.now().minusMonths(3)); case SIX_MONTHS -> coupon.createdAt.after(LocalDateTime.now().minusMonths(6)); case YEAR -> coupon.createdAt.after(LocalDateTime.now().minusYears(1)); @@ -118,7 +123,7 @@ public List exposureCoupons(Long memberId, Long accommodationId) { return jpaQueryFactory.selectFrom(coupon) .where(coupon.member.id.eq(memberId) .and(coupon.accommodation.id.eq(accommodationId)) - .and(coupon.couponStatus.eq(CouponStatusType.EXPOSURE_ON))) + .and(coupon.couponStatus.eq(EXPOSURE_ON))) .fetch(); } @@ -138,7 +143,7 @@ public Boolean noExposure(Long memberId, Long accommodationId) { return jpaQueryFactory.selectFrom(coupon) .where(coupon.member.id.eq(memberId) .and(coupon.accommodation.id.eq(accommodationId)) - .and(coupon.couponStatus.eq(CouponStatusType.EXPOSURE_ON))) + .and(coupon.couponStatus.eq(EXPOSURE_ON))) .fetch().isEmpty(); } diff --git a/src/main/java/com/coolpeace/domain/coupon/service/CouponService.java b/src/main/java/com/coolpeace/domain/coupon/service/CouponService.java index 06e2d006..577b7039 100644 --- a/src/main/java/com/coolpeace/domain/coupon/service/CouponService.java +++ b/src/main/java/com/coolpeace/domain/coupon/service/CouponService.java @@ -10,8 +10,7 @@ import com.coolpeace.domain.coupon.dto.response.CouponCategoryResponse; import com.coolpeace.domain.coupon.dto.response.CouponResponse; import com.coolpeace.domain.coupon.entity.Coupon; -import com.coolpeace.domain.coupon.entity.type.CouponIssuerType; -import com.coolpeace.domain.coupon.entity.type.CouponStatusType; +import com.coolpeace.domain.coupon.entity.type.*; import com.coolpeace.domain.coupon.exception.*; import com.coolpeace.domain.coupon.repository.CouponRepository; import com.coolpeace.domain.member.entity.Member; @@ -21,6 +20,8 @@ import com.coolpeace.domain.room.exception.RegisterRoomsEmptyException; import com.coolpeace.domain.room.exception.RoomNotFoundException; import com.coolpeace.domain.room.repository.RoomRepository; +import com.coolpeace.global.common.DayOfWeekUtil; +import com.coolpeace.global.common.ValuedEnum; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -30,10 +31,12 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.time.DayOfWeek; import java.time.LocalDate; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Optional; @RequiredArgsConstructor @Service @@ -93,12 +96,13 @@ public void register(Long memberId, CouponRegisterRequest couponRegisterRequest) Coupon savedCoupon = couponRepository.save(Coupon.from( couponRegisterRequest.title(), - couponRegisterRequest.discountType(), + ValuedEnum.of(DiscountType.class, couponRegisterRequest.discountType()), couponRegisterRequest.discountValue(), - couponRegisterRequest.customerType(), - couponRegisterRequest.couponRoomType(), + ValuedEnum.of(CustomerType.class, couponRegisterRequest.customerType()), + ValuedEnum.of(CouponRoomType.class, couponRegisterRequest.couponRoomType()), couponRegisterRequest.minimumReservationPrice(), - couponRegisterRequest.couponUseConditionDays(), + DayOfWeekUtil.fromDayOfWeekStrings(couponRegisterRequest.couponUseConditionDays()) + , couponRegisterRequest.exposureStartDate(), couponRegisterRequest.exposureEndDate(), accommodation, @@ -122,13 +126,26 @@ public void updateCoupon(Long memberId, String couponNumber, CouponUpdateRequest } else { rooms = Collections.emptyList(); } + DiscountType discountType = Optional.ofNullable(couponUpdateRequest.discountType()) + .map(str -> ValuedEnum.of(DiscountType.class, str)) + .orElse(null); + CustomerType customerType = Optional.ofNullable(couponUpdateRequest.customerType()) + .map(str -> ValuedEnum.of(CustomerType.class, str)) + .orElse(null); + CouponRoomType couponRoomType = Optional.ofNullable(couponUpdateRequest.couponRoomType()) + .map(str -> ValuedEnum.of(CouponRoomType.class, str)) + .orElse(null); + List dayOfWeeks = Optional.ofNullable(couponUpdateRequest.couponUseConditionDays()) + .map(DayOfWeekUtil::fromDayOfWeekStrings) + .orElse(null); + storedCoupon.updateCoupon( - couponUpdateRequest.discountType(), + discountType, couponUpdateRequest.discountValue(), - couponUpdateRequest.customerType(), - couponUpdateRequest.couponRoomType(), + customerType, + couponRoomType, couponUpdateRequest.minimumReservationPrice(), - couponUpdateRequest.couponUseConditionDays(), + dayOfWeeks, rooms, couponUpdateRequest.exposureStartDate(), couponUpdateRequest.exposureEndDate() @@ -143,27 +160,27 @@ public void exposeCoupon(Long memberId, String couponNumber, CouponExposeRequest // 노출 시작 이후로 대기중을 요청한 경우 예외처리 boolean isAfterExposureStartDate = !(LocalDate.now().isBefore(storedCoupon.getExposureStartDate())); - boolean isWaitRequest = couponExposeRequest.couponStatus().equals(CouponStatusType.EXPOSURE_WAIT); + boolean isWaitRequest = couponExposeRequest.couponStatus().equals(CouponStatusType.EXPOSURE_WAIT.getValue()); if (isAfterExposureStartDate && isWaitRequest) { throw new InvalidCouponStateWaitExposureDateException(); } // 노출 기간이 아닌데 ON/OFF를 요청한 경우 예외처리 boolean isBetweenExposureDate = storedCoupon.betweenExposureDate(LocalDate.now()); - boolean isONOFFRequest = couponExposeRequest.couponStatus().equals(CouponStatusType.EXPOSURE_ON) - || couponExposeRequest.couponStatus().equals(CouponStatusType.EXPOSURE_OFF); + boolean isONOFFRequest = couponExposeRequest.couponStatus().equals(CouponStatusType.EXPOSURE_ON.getValue()) + || couponExposeRequest.couponStatus().equals(CouponStatusType.EXPOSURE_OFF.getValue()); if (!isBetweenExposureDate && isONOFFRequest) { throw new InvalidCouponStateOutsideExposureDateException(); } // 노출 종료 이전에 종료를 요청한 경우 예외처리 boolean isBeforeExposureEndDate = !(LocalDate.now().isAfter(storedCoupon.getExposureEndDate())); - boolean isEndRequest = couponExposeRequest.couponStatus().equals(CouponStatusType.EXPOSURE_END); + boolean isEndRequest = couponExposeRequest.couponStatus().equals(CouponStatusType.EXPOSURE_END.getValue()); if (isBeforeExposureEndDate && isEndRequest) { throw new InvalidCouponStateEndExposureDateException(); } - storedCoupon.changeCouponStatus(couponExposeRequest.couponStatus()); + storedCoupon.changeCouponStatus(ValuedEnum.of(CouponStatusType.class, couponExposeRequest.couponStatus())); } @Transactional From b1380245a1f5f35904d6c539ae9a51e6c8907645 Mon Sep 17 00:00:00 2001 From: rightpair Date: Thu, 18 Jan 2024 23:37:54 +0900 Subject: [PATCH 8/8] =?UTF-8?q?[test]=20Request,=20Params=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=EC=97=90=20=EC=9D=98=ED=95=9C=20=EC=84=9C=EB=B9=84?= =?UTF-8?q?=EC=8A=A4=20=EB=B0=8F=20=EC=9D=B8=ED=94=84=EB=9D=BC=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/http/coupons/search.http | 4 +- .../docs/coupon/CouponControllerTest.java | 42 ++++++++----------- .../repository/CouponRepositoryTest.java | 4 +- .../coupon/service/CouponServiceTest.java | 29 ++++++------- 4 files changed, 36 insertions(+), 43 deletions(-) diff --git a/src/test/http/coupons/search.http b/src/test/http/coupons/search.http index 4458eab7..bd11518f 100644 --- a/src/test/http/coupons/search.http +++ b/src/test/http/coupons/search.http @@ -1,3 +1,3 @@ ### 쿠폰 검색 -GET http://localhost:8080/v1/coupons?page=1&size=2 -Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJjbGllbnRfaWQiOiIyIiwiY2xpZW50X2VtYWlsIjoidGVzdEB0ZXN0LmNvbSIsImlzcyI6ImNvb2xwZWFjZSIsImlhdCI6MTcwNDYzODY5NSwiZXhwIjoxNzA0Njc0Njk1fQ.Re2QfSHVBJ9gKq8rCpv8wlvSuDS80jwEjHgGIxg840Og1ng6R_cozWOgw_eU9hgoYW0NUIAZLW322scfkUCRvQ +GET http://localhost:8080/v1/coupons?status=노출%20ON&page=1 +Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJjbGllbnRfaWQiOiIxMSIsImNsaWVudF9lbWFpbCI6InRlc3RAdGVzdC5jb20iLCJpc3MiOiJjb29scGVhY2UiLCJpYXQiOjE3MDU1NzkwODIsImV4cCI6MTcwNTYxNTA4Mn0.e-1gRJj6ddKKDtfFIUmLz4iUJb0jVW6JzsoMB6Rt1ty9-gJNoDGesmc831fO_3HwbD3OC1_CDG6itzHHtgAcIg diff --git a/src/test/java/com/coolpeace/docs/coupon/CouponControllerTest.java b/src/test/java/com/coolpeace/docs/coupon/CouponControllerTest.java index 7db56355..945cf5bb 100644 --- a/src/test/java/com/coolpeace/docs/coupon/CouponControllerTest.java +++ b/src/test/java/com/coolpeace/docs/coupon/CouponControllerTest.java @@ -5,7 +5,6 @@ import com.coolpeace.domain.coupon.dto.request.CouponExposeRequest; import com.coolpeace.domain.coupon.dto.request.CouponRegisterRequest; import com.coolpeace.domain.coupon.dto.request.CouponUpdateRequest; -import com.coolpeace.domain.coupon.dto.request.SearchCouponParams; import com.coolpeace.domain.coupon.dto.request.type.SearchCouponDateFilterType; import com.coolpeace.domain.coupon.dto.request.type.SearchCouponStatusFilterType; import com.coolpeace.domain.coupon.dto.response.CouponResponse; @@ -23,6 +22,7 @@ import com.coolpeace.global.builder.AccommodationTestBuilder; import com.coolpeace.global.builder.CouponTestBuilder; import com.coolpeace.global.builder.RoomTestBuilder; +import com.coolpeace.global.common.DayOfWeekUtil; import com.coolpeace.global.common.RestDocsIntegrationTest; import com.coolpeace.global.util.CouponTestUtil; import com.coolpeace.global.util.MemberTestUtil; @@ -102,15 +102,15 @@ void registerCoupon_success() throws Exception { CouponRegisterRequest couponRegisterRequest = new CouponRegisterRequest( coupon.getTitle(), - coupon.getCustomerType(), - coupon.getDiscountType(), + coupon.getCustomerType().getValue(), + coupon.getDiscountType().getValue(), coupon.getDiscountValue(), - coupon.getCouponRoomType(), + coupon.getCouponRoomType().getValue(), accommodation.getId(), false, randomRoomNumbers, coupon.getMinimumReservationPrice(), - coupon.getCouponUseConditionDays(), + DayOfWeekUtil.fromDayOfWeeks(coupon.getCouponUseConditionDays()), coupon.getExposureStartDate(), coupon.getExposureEndDate() ); @@ -170,13 +170,12 @@ void searchCoupon_success() throws Exception { // when MultiValueMap requestParams = createCouponSearchParams(); ResultActions result = mockMvc.perform(get(URL_DOMAIN_PREFIX) - .contentType(MediaType.APPLICATION_JSON) .header(AUTHORIZATION, BEARER_PREFIX + loginResponse.accessToken()) - .params(requestParams)); + .queryParams(requestParams)); // then result -// .andDo(print()) + .andDo(print()) .andExpect(status().isOk()) .andDo(document("coupon-search", resource(ResourceSnippetParameters.builder() @@ -229,17 +228,10 @@ void searchCoupon_success() throws Exception { } private static MultiValueMap createCouponSearchParams() { - SearchCouponParams searchCouponParams = new SearchCouponParams( - SearchCouponStatusFilterType.All, - null, - SearchCouponDateFilterType.YEAR - ); MultiValueMap requestParams = new LinkedMultiValueMap<>(); - requestParams.add("status", searchCouponParams.status().name()); - if (searchCouponParams.title() != null) { - requestParams.add("title", searchCouponParams.title()); - } - requestParams.add("date", searchCouponParams.date().name()); + requestParams.add("status", SearchCouponStatusFilterType.All.getValue()); +// requestParams.add("title", ""); + requestParams.add("date", SearchCouponDateFilterType.YEAR.getValue()); requestParams.add("page", "1"); return requestParams; } @@ -332,14 +324,14 @@ void updateCoupon_success() throws Exception { coupon.generateCouponNumber(CouponIssuerType.OWNER, coupon.getId()); CouponUpdateRequest request = new CouponUpdateRequest( accommodation.getId(), - coupon.getCustomerType(), - coupon.getDiscountType(), + coupon.getCustomerType().getValue(), + coupon.getDiscountType().getValue(), coupon.getDiscountValue(), - coupon.getCouponRoomType(), + coupon.getCouponRoomType().getValue(), coupon.getCouponRooms().isEmpty(), coupon.getCouponRooms().stream().map(room -> room.getRoom().getRoomNumber()).toList(), coupon.getMinimumReservationPrice() + 10000, - coupon.getCouponUseConditionDays(), + DayOfWeekUtil.fromDayOfWeeks(coupon.getCouponUseConditionDays()), coupon.getExposureStartDate(), coupon.getExposureEndDate() ); @@ -389,12 +381,12 @@ void exposeCoupon_success() throws Exception { coupon.generateCouponNumber(CouponIssuerType.OWNER, coupon.getId()); CouponExposeRequest request; if (coupon.betweenExposureDate(LocalDate.now())) { - request = new CouponExposeRequest(CouponStatusType.EXPOSURE_OFF); + request = new CouponExposeRequest(CouponStatusType.EXPOSURE_OFF.getValue()); } else { if (coupon.getExposureEndDate().isBefore(LocalDate.now())) { - request = new CouponExposeRequest(CouponStatusType.EXPOSURE_END); + request = new CouponExposeRequest(CouponStatusType.EXPOSURE_END.getValue()); } else { - request = new CouponExposeRequest(CouponStatusType.EXPOSURE_WAIT); + request = new CouponExposeRequest(CouponStatusType.EXPOSURE_WAIT.getValue()); } } diff --git a/src/test/java/com/coolpeace/domain/coupon/repository/CouponRepositoryTest.java b/src/test/java/com/coolpeace/domain/coupon/repository/CouponRepositoryTest.java index 11f79009..0ce09601 100644 --- a/src/test/java/com/coolpeace/domain/coupon/repository/CouponRepositoryTest.java +++ b/src/test/java/com/coolpeace/domain/coupon/repository/CouponRepositoryTest.java @@ -71,9 +71,9 @@ void beforeEach() { void findAllCoupons_success() { //given SearchCouponParams params = new SearchCouponParams( - SearchCouponStatusFilterType.EXPOSURE_OFF, + SearchCouponStatusFilterType.EXPOSURE_OFF.getValue(), null, - SearchCouponDateFilterType.SIX_MONTHS + SearchCouponDateFilterType.SIX_MONTHS.getValue() ); //when diff --git a/src/test/java/com/coolpeace/domain/coupon/service/CouponServiceTest.java b/src/test/java/com/coolpeace/domain/coupon/service/CouponServiceTest.java index 35c8cb3a..02cca91a 100644 --- a/src/test/java/com/coolpeace/domain/coupon/service/CouponServiceTest.java +++ b/src/test/java/com/coolpeace/domain/coupon/service/CouponServiceTest.java @@ -25,6 +25,7 @@ import com.coolpeace.global.builder.CouponTestBuilder; import com.coolpeace.global.builder.MemberTestBuilder; import com.coolpeace.global.builder.RoomTestBuilder; +import com.coolpeace.global.common.DayOfWeekUtil; import com.coolpeace.global.util.CouponTestUtil; import com.coolpeace.global.util.RoomTestUtil; import org.junit.jupiter.api.BeforeEach; @@ -122,7 +123,7 @@ private static List searchFilterMethodSource() { for (SearchCouponStatusFilterType statusType : SearchCouponStatusFilterType.values()) { for (SearchCouponDateFilterType dateType : SearchCouponDateFilterType.values()) { for (String title : titles) { - params.add(new SearchCouponParams(statusType, title, dateType)); + params.add(new SearchCouponParams(statusType.getValue(), title, dateType.getValue())); } } } @@ -150,7 +151,7 @@ void filtered_search_success(SearchCouponParams params) { @Test void paged_filtered_search_success() { // given - SearchCouponParams searchCouponParams = new SearchCouponParams(null, null, SearchCouponDateFilterType.YEAR); + SearchCouponParams searchCouponParams = new SearchCouponParams(null, null, SearchCouponDateFilterType.YEAR.getValue()); PageRequest firstPageRequest = PageRequest.of(0, 10); given(couponRepository.findAllCoupons(anyLong(), any(SearchCouponParams.class), any(PageRequest.class))) @@ -312,15 +313,15 @@ private CouponRegisterRequest getCouponRegisterRequest() { private CouponRegisterRequest getCouponRegisterRequest(boolean registerAllRoom) { return new CouponRegisterRequest( coupon.getTitle(), - coupon.getCustomerType(), - coupon.getDiscountType(), + coupon.getCustomerType().getValue(), + coupon.getDiscountType().getValue(), coupon.getDiscountValue(), - coupon.getCouponRoomType(), + coupon.getCouponRoomType().getValue(), accommodation.getId(), registerAllRoom, !registerAllRoom ? registerRoomNumbers : null, coupon.getMinimumReservationPrice(), - coupon.getCouponUseConditionDays(), + DayOfWeekUtil.fromDayOfWeeks(coupon.getCouponUseConditionDays()), coupon.getExposureStartDate(), coupon.getExposureEndDate() ); @@ -375,14 +376,14 @@ void updateCoupon_mono_update_success() { //when executeUpdateCoupon(new CouponUpdateRequest(accommodation.getId(), - couponB.getCustomerType(), + couponB.getCustomerType().getValue(), null, null, - couponB.getCouponRoomType(), + couponB.getCouponRoomType().getValue(), null, null, couponB.getMinimumReservationPrice(), - couponB.getCouponUseConditionDays(), + DayOfWeekUtil.fromDayOfWeeks(couponB.getCouponUseConditionDays()), couponB.getExposureStartDate(), couponB.getExposureEndDate() )); @@ -403,7 +404,7 @@ void updateCoupon_discountType_update_success() { //when executeUpdateCoupon(new CouponUpdateRequest(accommodation.getId(), null, - couponB.getDiscountType(), + couponB.getDiscountType().getValue(), couponB.getDiscountValue(), null, null, @@ -444,7 +445,7 @@ void _success() { generateCouponOfBetweenExposureDate(); CouponStatusType expectedCouponState = CouponStatusType.EXPOSURE_OFF; - CouponExposeRequest request = new CouponExposeRequest(expectedCouponState); + CouponExposeRequest request = new CouponExposeRequest(expectedCouponState.getValue()); given(couponRepository.existsByMemberIdAndCouponNumber(anyLong(), anyString())).willReturn(true); given(couponRepository.findByCouponNumber(anyString())).willReturn(Optional.of(coupon)); @@ -462,7 +463,7 @@ void after_exposure_start_date_but_request_exposure_wait_fail() { generateCouponOfBetweenExposureDate(); CouponStatusType expectedCouponState = CouponStatusType.EXPOSURE_WAIT; - CouponExposeRequest request = new CouponExposeRequest(expectedCouponState); + CouponExposeRequest request = new CouponExposeRequest(expectedCouponState.getValue()); given(couponRepository.existsByMemberIdAndCouponNumber(anyLong(), anyString())).willReturn(true); given(couponRepository.findByCouponNumber(anyString())).willReturn(Optional.of(coupon)); @@ -481,7 +482,7 @@ void not_between_exposure_date_but_request_exposure_OnOff_fail(CouponStatusType //given generateCouponOfBeforeExposureDate(); - CouponExposeRequest request = new CouponExposeRequest(expectedCouponState); + CouponExposeRequest request = new CouponExposeRequest(expectedCouponState.getValue()); given(couponRepository.existsByMemberIdAndCouponNumber(anyLong(), anyString())).willReturn(true); given(couponRepository.findByCouponNumber(anyString())).willReturn(Optional.of(coupon)); @@ -498,7 +499,7 @@ void before_exposure_end_date_but_request_exposure_end_fail() { generateCouponOfBetweenExposureDate(); CouponStatusType expectedCouponState = CouponStatusType.EXPOSURE_END; - CouponExposeRequest request = new CouponExposeRequest(expectedCouponState); + CouponExposeRequest request = new CouponExposeRequest(expectedCouponState.getValue()); given(couponRepository.existsByMemberIdAndCouponNumber(anyLong(), anyString())).willReturn(true); given(couponRepository.findByCouponNumber(anyString())).willReturn(Optional.of(coupon));