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 : 밸리데이션 정리 및 밸리데이션 테스트 코드 작성 #345

Merged
merged 2 commits into from
Feb 12, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import band.gosrock.domain.common.vo.Money;
import band.gosrock.domain.domains.issuedTicket.exception.CanNotCancelEntranceException;
import band.gosrock.domain.domains.issuedTicket.exception.CanNotCancelException;
import band.gosrock.domain.domains.issuedTicket.exception.CanNotEntranceException;
import band.gosrock.domain.domains.issuedTicket.exception.IssuedTicketAlreadyEntranceException;
import band.gosrock.infrastructure.config.mail.dto.EmailIssuedTicketInfo;
import java.util.ArrayList;
Expand Down Expand Up @@ -163,7 +162,7 @@ public EmailIssuedTicketInfo toEmailIssuedTicketInfo() {
티켓이 입장 미완료 상태가 아니면 취소 할 수 없음
*/
public void cancel() {
if (this.issuedTicketStatus != IssuedTicketStatus.ENTRANCE_INCOMPLETE) {
if (!this.issuedTicketStatus.isBeforeEntrance()) {
throw CanNotCancelException.EXCEPTION;
}
this.issuedTicketStatus = IssuedTicketStatus.CANCELED;
Expand All @@ -175,10 +174,10 @@ public void cancel() {
(입장 처리 도메인 이벤트 발행)
*/
public void entrance() {
if (this.issuedTicketStatus == IssuedTicketStatus.CANCELED) {
throw CanNotEntranceException.EXCEPTION;
if (this.issuedTicketStatus.isCanceled()) {
throw CanNotCancelException.EXCEPTION;
}
if (this.issuedTicketStatus == IssuedTicketStatus.ENTRANCE_COMPLETED) {
if (this.issuedTicketStatus.isAfterEntrance()) {
throw IssuedTicketAlreadyEntranceException.EXCEPTION;
}
this.issuedTicketStatus = IssuedTicketStatus.ENTRANCE_COMPLETED;
Expand All @@ -190,7 +189,7 @@ public void entrance() {
티켓이 입장 완료 상태가 아니면 입장 취소 할 수 없음
*/
public void entranceCancel() {
if (this.issuedTicketStatus != IssuedTicketStatus.ENTRANCE_COMPLETED) {
if (!this.issuedTicketStatus.isAfterEntrance()) {
throw CanNotCancelEntranceException.EXCEPTION;
}
this.issuedTicketStatus = IssuedTicketStatus.ENTRANCE_INCOMPLETE;
Copy link
Member

@gengminy gengminy Feb 11, 2023

Choose a reason for hiding this comment

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

Event 엔티티의 setStatus() 참고하면 중복된 코드 구조 줄일 수 있을 거 같아욤

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,8 @@ public Boolean isBeforeEntrance() {
public Boolean isAfterEntrance() {
return this == IssuedTicketStatus.ENTRANCE_COMPLETED;
}

public Boolean is(IssuedTicket issuedTicket) {
return issuedTicket.getIssuedTicketStatus() == IssuedTicketStatus.ENTRANCE_INCOMPLETE;
}
}
Comment on lines +33 to 37
Copy link
Member

Choose a reason for hiding this comment

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

이건 어디에 쓰는건가염

Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@

import band.gosrock.common.annotation.Validator;
import band.gosrock.domain.domains.event.adaptor.EventAdaptor;
import band.gosrock.domain.domains.event.domain.Event;
import band.gosrock.domain.domains.host.adaptor.HostAdaptor;
import band.gosrock.domain.domains.host.domain.Host;
import band.gosrock.domain.domains.issuedTicket.domain.IssuedTicket;
import band.gosrock.domain.domains.issuedTicket.exception.IssuedTicketNotMatchedEventException;
import java.util.Objects;
Expand All @@ -17,12 +15,13 @@ public class IssuedTicketValidator {

private final EventAdaptor eventAdaptor;
private final HostAdaptor hostAdaptor;

public void validCanModifyIssuedTicketUser(IssuedTicket issuedTicket, Long currentUserId) {
Event event = eventAdaptor.findById(issuedTicket.getEventId());
Host host = hostAdaptor.findById(event.getHostId());
host.validateHostUser(currentUserId);
}
//
// public void validCanModifyIssuedTicketUser(IssuedTicket issuedTicket, Long currentUserId)
// {
// Event event = eventAdaptor.findById(issuedTicket.getEventId());
// Host host = hostAdaptor.findById(event.getHostId());
// host.validateHostUser(currentUserId);
// }

public void validIssuedTicketEventIdEqualEvent(IssuedTicket issuedTicket, Long eventId) {
if (!Objects.equals(issuedTicket.getEventId(), eventId)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package band.gosrock.domain.domains.issuedTicket.domain.validator;

import static org.mockito.BDDMockito.given;

import band.gosrock.domain.domains.event.adaptor.EventAdaptor;
import band.gosrock.domain.domains.host.adaptor.HostAdaptor;
import band.gosrock.domain.domains.issuedTicket.domain.IssuedTicket;
import band.gosrock.domain.domains.issuedTicket.exception.IssuedTicketNotMatchedEventException;
import band.gosrock.domain.domains.issuedTicket.validator.IssuedTicketValidator;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

@ExtendWith(MockitoExtension.class)
public class IssuedTicketValidatorTest {

@Mock IssuedTicket issuedTicket;

@Mock EventAdaptor eventAdaptor;

@Mock HostAdaptor hostAdaptor;

IssuedTicketValidator issuedTicketValidator;

@BeforeEach
public void setUp() {
issuedTicketValidator = new IssuedTicketValidator(eventAdaptor, hostAdaptor);
}

@Test
public void 발급티켓_이벤트_검증_성공() {
// given
given(issuedTicket.getEventId()).willReturn(1L);
// when
issuedTicketValidator.validIssuedTicketEventIdEqualEvent(issuedTicket, 1L);
}

@Test
public void 발급티켓_이벤트_검증_실패() {
// given
given(issuedTicket.getEventId()).willReturn(2L);
// when
// then
Assertions.assertThrows(
IssuedTicketNotMatchedEventException.class,
() -> issuedTicketValidator.validIssuedTicketEventIdEqualEvent(issuedTicket, 1L));
}
}