From dd13ec14455968f5613efcdeb32acbb69d9f5c34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=A4=80?= Date: Sat, 11 Feb 2023 18:14:12 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat=20:=20=EB=B0=B8=EB=A6=AC=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=EC=85=98=20=EC=A0=95=EB=A6=AC=20=EB=B0=8F=20=EB=B0=B8?= =?UTF-8?q?=EB=A6=AC=EB=8D=B0=EC=9D=B4=EC=85=98=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../issuedTicket/domain/IssuedTicket.java | 11 ++-- .../domain/IssuedTicketStatus.java | 4 ++ .../validator/IssuedTicketValidator.java | 15 +++--- .../validator/IssuedTicketValidatorTest.java | 51 +++++++++++++++++++ 4 files changed, 67 insertions(+), 14 deletions(-) create mode 100644 DuDoong-Domain/src/test/java/band/gosrock/domain/domains/issuedTicket/domain/validator/IssuedTicketValidatorTest.java 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..efed1157 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 @@ -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; @@ -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; @@ -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; @@ -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; 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)); + } +} From abaac52489fcfd8ab7be39ae50a57ec9c57d0424 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=A4=80?= Date: Sat, 11 Feb 2023 18:29:01 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix=20:=20=EC=B7=A8=EC=86=8C=20=ED=8B=B0?= =?UTF-8?q?=EC=BC=93=20=EC=9E=85=EC=9E=A5=20=EC=9A=94=EC=B2=AD=20=EC=8B=9C?= =?UTF-8?q?=20=EB=B1=89=EB=8A=94=20exception=20class=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/domains/issuedTicket/domain/IssuedTicket.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 efed1157..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 @@ -9,6 +9,7 @@ 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; @@ -175,7 +176,7 @@ public void cancel() { */ public void entrance() { if (this.issuedTicketStatus.isCanceled()) { - throw CanNotCancelException.EXCEPTION; + throw CanNotEntranceException.EXCEPTION; } if (this.issuedTicketStatus.isAfterEntrance()) { throw IssuedTicketAlreadyEntranceException.EXCEPTION;