diff --git a/backend/src/main/java/kr/touroot/travelplan/domain/TravelPlan.java b/backend/src/main/java/kr/touroot/travelplan/domain/TravelPlan.java index 973aa7eb..03e6091a 100644 --- a/backend/src/main/java/kr/touroot/travelplan/domain/TravelPlan.java +++ b/backend/src/main/java/kr/touroot/travelplan/domain/TravelPlan.java @@ -35,7 +35,7 @@ public class TravelPlan extends BaseEntity { @Column(nullable = false) private LocalDate startDate; - @Column(columnDefinition = "CHAR(36)", nullable = false) + @Column(nullable = false) private UUID shareKey; @JoinColumn(name = "author_id", nullable = false) @@ -43,7 +43,7 @@ public class TravelPlan extends BaseEntity { private Member author; public TravelPlan(Long id, String title, LocalDate startDate, UUID shareKey, Member author) { - validate(title, startDate, author); + validate(title, startDate, author, shareKey); this.id = id; this.title = title; this.startDate = startDate; @@ -55,16 +55,15 @@ public TravelPlan(String title, LocalDate startDate, UUID shareKey, Member autho this(null, title, startDate, shareKey, author); } - - private void validate(String title, LocalDate startDate, Member author) { - validateNotNull(title, startDate, author); + private void validate(String title, LocalDate startDate, Member author, UUID shareKey) { + validateNotNull(title, startDate, author, shareKey); validateNotBlank(title); validateTitleLength(title); } - private void validateNotNull(String title, LocalDate startDate, Member author) { - if (title == null || startDate == null || author == null) { - throw new BadRequestException("여행 계획에서 제목과 시작 날짜, 그리고 작성자는 비어 있을 수 없습니다"); + private void validateNotNull(String title, LocalDate startDate, Member author, UUID shareKey) { + if (title == null || startDate == null || author == null || shareKey == null) { + throw new BadRequestException("여행 계획에서 제목과 시작 날짜, 공유 키, 그리고 작성자는 비어 있을 수 없습니다"); } } diff --git a/backend/src/test/java/kr/touroot/travelplan/domain/TravelPlanTest.java b/backend/src/test/java/kr/touroot/travelplan/domain/TravelPlanTest.java index f47a538f..e3d1c609 100644 --- a/backend/src/test/java/kr/touroot/travelplan/domain/TravelPlanTest.java +++ b/backend/src/test/java/kr/touroot/travelplan/domain/TravelPlanTest.java @@ -21,6 +21,7 @@ class TravelPlanTest { private static final String VALID_TITLE = "제주도 여행 계획"; private static final UUID VALID_UUID = UUID.randomUUID(); private static final LocalDate VALID_START_DATE = LocalDate.now().plusDays(2); + public static final String EMPTY_FIELD_EXIST_MESSAGE = "여행 계획에서 제목과 시작 날짜, 공유 키, 그리고 작성자는 비어 있을 수 없습니다"; @DisplayName("올바른 여행 계획 생성 시에는 예외가 발생하지 않는다") @Test @@ -34,7 +35,7 @@ void createTravelPlanWithValidData() { void createTravelPlanWithNullTitle() { assertThatThrownBy(() -> new TravelPlan(null, VALID_START_DATE, VALID_UUID, VALID_AUTHOR)) .isInstanceOf(BadRequestException.class) - .hasMessage("여행 계획에서 제목과 시작 날짜, 그리고 작성자는 비어 있을 수 없습니다"); + .hasMessage(EMPTY_FIELD_EXIST_MESSAGE); } @DisplayName("여행 계획의 시작 날짜가 비어 있는 경우 여행 계획 생성 시 예외가 발생한다") @@ -42,7 +43,15 @@ void createTravelPlanWithNullTitle() { void createTravelPlanWithNullStartDate() { assertThatThrownBy(() -> new TravelPlan(VALID_TITLE, null, VALID_UUID, VALID_AUTHOR)) .isInstanceOf(BadRequestException.class) - .hasMessage("여행 계획에서 제목과 시작 날짜, 그리고 작성자는 비어 있을 수 없습니다"); + .hasMessage(EMPTY_FIELD_EXIST_MESSAGE); + } + + @DisplayName("여행 게획의 공유 키가 비어 있는 경우 여행 계획 생성 시 예외가 발생한다") + @Test + void createTravelPlanWithNullShareKey() { + assertThatThrownBy(() -> new TravelPlan(VALID_TITLE, null, VALID_UUID, VALID_AUTHOR)) + .isInstanceOf(BadRequestException.class) + .hasMessage(EMPTY_FIELD_EXIST_MESSAGE); } @DisplayName("여행 계획 제목이 공백 문자로만 이루어져 있는 경우 생성 시 예외가 발생한다")