Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feat] 할인 쿠폰 등록 #71

Merged
merged 49 commits into from
Aug 15, 2024

Conversation

kimhyun5u
Copy link
Member

@kimhyun5u kimhyun5u commented Aug 15, 2024

💡 다음 이슈를 해결했어요.

Issue Link - #52

  • 할인 쿠폰 등록
  • 고정 할인 금액, 개수, 만료일을 입력해 할인 쿠폰을 등록할 수 있다.
  • 할인 쿠폰의 제목을 입력할 수 있다.

개발을 진행하면서 다음과 같은 제약 조건을 추가했습니다.

  • 쿠폰의 할인 금액은 0원 이상이어야 한다.
  • 쿠폰의 만료일은 현재 시간 이후여야 한다.
  • 쿠폰의 개수는 0개 이상이어야 한다.
  • 쿠폰 제목은 빈값일 수 없다.
  • 쿠폰 제목은 유일하다.
  • 쿠폰의 제목은 100자 이하여야 한다.

💡 이슈를 처리하면서 추가된 코드가 있어요.

  • Coupon: 쿠폰의 Entity
  • CreateCouponService: 쿠폰을 등록하는 서비스
  • CouponRepository: 쿠폰의 Repository
  • CouponApiController: 쿠폰의 ApiController

💡 이런 고민을 했어요.

  • 처음 쿠폰 등록의 명칭을 issue 라고 생각했는데 issue 는 쿠폰을 구매자에게 발급할 때가 더 적합한 것 같아서 create로 수정했습니다!
  • 쿠폰을 일단 등록한 뒤 사용자에게 부여하는 기록 테이블을 만들어 사용하는 게 좋아보입니다!

✅ 셀프 체크리스트

  • 내 코드를 스스로 검토했습니다.
  • 필요한 테스트를 추가했습니다.
  • 모든 테스트를 통과합니다.
  • 브랜치 전략에 맞는 브랜치에 PR을 올리고 있습니다.
  • 커밋 메세지를 컨벤션에 맞추었습니다.
  • wiki를 수정했습니다.

- '쿠폰은 고정 할인 금액, 개수, 만료일을 입력해 할인 쿠폰을 등록할 수 있다.' 요구사항에 맞도록 생성 테스트
- discountAmount: 고정 할인 금액
- quantity: 개수
- expired: 만료일
- coupons -> Coupons
- IllegalArgumentException -> InvalidCreationCouponException
- 잘못된 쿠폰 생성 시 발생하는 예외
- 테스트 환경을 수량이 0 미만, 할인 금액이 0 미만인 경우로 변경
- 쿠폰의 수량, 할인 금액, 만료일을 검증한다.
- CouponValidator 를 통한 검증 로직 추가
- IssueCouponServiceTest.testIssueCoupon: '쿠폰은 고정 할인 금액, 개수, 만료일을 입력해 할인 쿠폰을 등록할 수 있다.' 요구 사항에 맞춘 쿠폰 발급 테스트
- CouponFixture.createCoupon: test 에서 사용할 Coupon 객체를 생성
- Coupon은 제목을 가질 수 있다.
- Coupon의 제목은 1자 이상, 100자 이하여야 한다.
- 쿠폰에 제목 추가
- 제목 검증 로직 추가
- Coupon field 추가에 따른 변경 사항
- Coupon field 추가에 따른 변경 사항
- test 내에서 사용할 TestCoupon 구현
- IssueCouponService.issueCoupon: 쿠폰 제목, 할인 금액, 수량, 만료일을 받아 쿠폰을 발급한다.
- 하위 예외 전파 테스트
- IssueCouponService.issueCoupon ``@Transactional` 추가
- 코드 스타일에 맞게 변경
- CouponApiControllerTest.testIssueCoupon: 쿠폰 발급 요청 테스트
- CouponApiControllerTest.testIssueCoupon 검증 부분 공통 응답 형식에 맞게 변경
- CouponApiController.issueCoupon: 응답에 맞게 쿠폰을 생성
- Exception Handling 범위를 CustomerApiController 로 수정
- Request 제약 조건 추가
- RequestBody 제약조건 검증로직 추가
- assert 시 한 가지의 메소드만 수행하도록 수정
- IssueCouponServiceIntegrationTest.testFailWhenDuplicatedTitle: 쿠폰 발급 시 중복된 제목 입력 시 예외 처리 테스트
- title Unique 값으로 지정
- CouponErrorCode.DUPLICATE_COUPON_TITLE: 중복된 제목 입력 시 발생하는 에러 코드
- 중복된 제목 입력 시 발생하는 예외
- 중복된 제목 쿠폰 발행 시 예외 처리
- CouponErrorCode.DUPLICATE_COUPON_TITLE 상태코드 Conflict 로 변경
- CouponApiControllerTest.testIssueCouponFailWithDuplicateTitle: 중복된 제목 입력 시 실패 처리 테스트
- CouponExceptionHandler.handleDuplicateCouponTitleException: DuplicationCouponTitleException 을 처리한다.
- 쿠폰 등록의 명칭은 issue 보다 create 가 더 적합한 것 같아 변경했습니다.
- issue 라는 행위는 추후 구매자에게 발급되는 경우에 사용하는 게 더 적합해보입니다.
@kimhyun5u kimhyun5u added the ✨ Feature 기능 개발 label Aug 15, 2024
@kimhyun5u kimhyun5u added this to the 프로토타입 만들기 milestone Aug 15, 2024
@kimhyun5u kimhyun5u self-assigned this Aug 15, 2024
@kimhyun5u kimhyun5u linked an issue Aug 15, 2024 that may be closed by this pull request
@kimhyun5u kimhyun5u requested a review from a team August 15, 2024 10:14
kimhyun5u and others added 4 commits August 15, 2024 19:28
- title 검증 시 isBlank() 를 사용해 안정성 향상

Co-authored-by: 김현욱 <43038815+Hyeon-Uk@users.noreply.github.com>
Copy link
Contributor

@Hyeon-Uk Hyeon-Uk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM :~)

@kimhyun5u kimhyun5u requested review from june-777 and Dr-KoKo August 15, 2024 10:53
Copy link
Member

@june-777 june-777 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인 완료입니다! 고생하셨습니다 👍

@kimhyun5u kimhyun5u merged commit eab39b1 into main Aug 15, 2024
1 check passed
@kimhyun5u kimhyun5u deleted the feature/52_kimhyun5u_할인-쿠폰-등록 branch August 15, 2024 11:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ Feature 기능 개발
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

[기능] 할인 쿠폰 등록
3 participants