diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/domain/IssuedTicket.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/domain/IssuedTicket.java index 5f7c90f9..324186f6 100644 --- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/domain/IssuedTicket.java +++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/domain/IssuedTicket.java @@ -163,7 +163,7 @@ public EmailIssuedTicketInfo toEmailIssuedTicketInfo() { 티켓이 입장 미완료 상태가 아니면 취소 할 수 없음 */ public void cancel() { - if (this.issuedTicketStatus != IssuedTicketStatus.ENTRANCE_INCOMPLETE) { + if (!this.issuedTicketStatus.isBeforeEntrance()) { throw CanNotCancelException.EXCEPTION; } this.issuedTicketStatus = IssuedTicketStatus.CANCELED; @@ -175,10 +175,10 @@ public void cancel() { (입장 처리 도메인 이벤트 발행) */ public void entrance() { - if (this.issuedTicketStatus == IssuedTicketStatus.CANCELED) { + if (this.issuedTicketStatus.isCanceled()) { throw CanNotEntranceException.EXCEPTION; } - if (this.issuedTicketStatus == IssuedTicketStatus.ENTRANCE_COMPLETED) { + if (this.issuedTicketStatus.isAfterEntrance()) { throw IssuedTicketAlreadyEntranceException.EXCEPTION; } this.issuedTicketStatus = IssuedTicketStatus.ENTRANCE_COMPLETED; @@ -190,7 +190,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; diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/domain/IssuedTicketStatus.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/domain/IssuedTicketStatus.java index ec72fb12..fd6e75cd 100644 --- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/domain/IssuedTicketStatus.java +++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/domain/IssuedTicketStatus.java @@ -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; + } } diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/validator/IssuedTicketValidator.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/validator/IssuedTicketValidator.java index 5b06a878..2cea6b1d 100644 --- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/validator/IssuedTicketValidator.java +++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/validator/IssuedTicketValidator.java @@ -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; @@ -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)) { diff --git a/DuDoong-Domain/src/test/java/band/gosrock/domain/domains/issuedTicket/domain/validator/IssuedTicketValidatorTest.java b/DuDoong-Domain/src/test/java/band/gosrock/domain/domains/issuedTicket/domain/validator/IssuedTicketValidatorTest.java new file mode 100644 index 00000000..0d8f9e4f --- /dev/null +++ b/DuDoong-Domain/src/test/java/band/gosrock/domain/domains/issuedTicket/domain/validator/IssuedTicketValidatorTest.java @@ -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)); + } +}