diff --git a/src/main/java/eatda/domain/story/Story.java b/src/main/java/eatda/domain/story/Story.java index 112df8ae..ad923782 100644 --- a/src/main/java/eatda/domain/story/Story.java +++ b/src/main/java/eatda/domain/story/Story.java @@ -142,7 +142,7 @@ private void validateStoreCategory(StoreCategory storeCategory) { } private void validateDescription(String description) { - if (description == null || description.isBlank()) { + if (description != null && description.isBlank()) { throw new BusinessException(BusinessErrorCode.INVALID_STORY_DESCRIPTION); } } diff --git a/src/main/java/eatda/exception/BusinessErrorCode.java b/src/main/java/eatda/exception/BusinessErrorCode.java index b4a3b4e3..0c70656c 100644 --- a/src/main/java/eatda/exception/BusinessErrorCode.java +++ b/src/main/java/eatda/exception/BusinessErrorCode.java @@ -45,7 +45,7 @@ public enum BusinessErrorCode { PRESIGNED_URL_GENERATION_FAILED("SERVER004", "Presigned URL 생성에 실패했습니다.", HttpStatus.INTERNAL_SERVER_ERROR), //story - INVALID_STORY_DESCRIPTION("STY001", "스토리 본문은 필수입니다."), + INVALID_STORY_DESCRIPTION("STY001", "스토리 본문은 빈 문자열일 수 없습니다."), INVALID_STORY_IMAGE_KEY("STY002", "스토리 이미지 Key는 필수입니다."), STORY_MEMBER_REQUIRED("STY003", "스토리 작성 시 회원 정보는 필수입니다."), STORY_STORE_REQUIRED("STY004", "스토리 작성 시 가게 정보는 필수입니다."), diff --git a/src/test/java/eatda/document/store/CheerDocumentTest.java b/src/test/java/eatda/document/store/CheerDocumentTest.java index e20b6d70..0845f6b4 100644 --- a/src/test/java/eatda/document/store/CheerDocumentTest.java +++ b/src/test/java/eatda/document/store/CheerDocumentTest.java @@ -47,9 +47,9 @@ class RegisterCheer { - request body 예시 ```json { - "storeKakaoId": "123", // 가게 카카오 ID - "storeName": "농민백암순대 본점", // 가게 이름 - "description": "너무 맛있어요! 준환님 추천 맛집!" // 응원 내용 + "storeKakaoId": "123", // 가게 카카오 ID (필수) + "storeName": "농민백암순대 본점", // 가게 이름 (필수) + "description": "너무 맛있어요! 준환님 추천 맛집!" // 응원 내용 (필수) } ``` """; diff --git a/src/test/java/eatda/document/story/StoryDocumentTest.java b/src/test/java/eatda/document/story/StoryDocumentTest.java index f19d1f53..8beee97a 100644 --- a/src/test/java/eatda/document/story/StoryDocumentTest.java +++ b/src/test/java/eatda/document/story/StoryDocumentTest.java @@ -41,9 +41,9 @@ class RegisterStory { - request body 예시 ```json { - "storeKakaoId": "123", // 가게 카카오 ID - "storeName": "농민백암순대 본점", // 가게 이름 - "description": "너무 맛있어요! 준환님 추천 맛집!" // 스토리 내용 + "storeKakaoId": "123", // 가게 카카오 ID (필수) + "storeName": "농민백암순대 본점", // 가게 이름 (필수) + "description": "너무 맛있어요! 준환님 추천 맛집!" // 스토리 내용 (null 허용) } ``` """; @@ -60,7 +60,7 @@ class RegisterStory { ).requestBodyField("request", fieldWithPath("storeName").description("가게 이름"), fieldWithPath("storeKakaoId").description("가게의 카카오 ID"), - fieldWithPath("description").description("스토리 내용 (필수)") + fieldWithPath("description").description("스토리 내용 (필수)").optional() ); RestDocsResponse responseDocument = response() diff --git a/src/test/java/eatda/domain/story/StoryTest.java b/src/test/java/eatda/domain/story/StoryTest.java index a1bdd363..8501a137 100644 --- a/src/test/java/eatda/domain/story/StoryTest.java +++ b/src/test/java/eatda/domain/story/StoryTest.java @@ -117,9 +117,15 @@ class ValidateStore { @Nested class ValidateStory { + @Test + void 설명은_null_이어도_예외가_발생하지_않는다() { + Story story = defaultStoryBuilder.description(null).build(); + + assertThat(story.getDescription()).isNull(); + } + @ParameterizedTest - @NullAndEmptySource - @ValueSource(strings = {"\t", " "}) + @ValueSource(strings = {"\t", " ", ""}) void 설명이_비어있으면_예외가_발생한다(String emptyDescription) { assertThatThrownBy(() -> defaultStoryBuilder .description(emptyDescription) @@ -136,5 +142,16 @@ class ValidateStory { ).isInstanceOf(BusinessException.class) .hasMessage(BusinessErrorCode.INVALID_STORY_IMAGE_KEY.getMessage()); } + + @Test + void 이미지가_키가_비어있으면_예외가_발생한다() { + ImageKey emptyImageKey = new ImageKey(null); + + assertThatThrownBy(() -> defaultStoryBuilder + .imageKey(emptyImageKey) + .build() + ).isInstanceOf(BusinessException.class) + .hasMessage(BusinessErrorCode.INVALID_STORY_IMAGE_KEY.getMessage()); + } } }