From a00a4032274b4d609d49110ddf37938fdba6915a Mon Sep 17 00:00:00 2001 From: JanooGwan Date: Fri, 5 Jun 2026 10:46:40 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=8B=9C=ED=8A=B8=20=EB=8F=99=EC=95=84?= =?UTF-8?q?=EB=A6=AC=20=EB=93=B1=EB=A1=9D=20=EC=83=81=EC=84=B8=20=EC=86=8C?= =?UTF-8?q?=EA=B0=9C=20=EB=B9=88=20=EA=B0=92=20=EC=A0=80=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/AdminWebsiteClubSheetImportConfirmRequest.java | 2 +- .../service/AdminWebsiteClubSheetImportService.java | 9 +++++++-- .../AdminWebsiteClubSheetImportControllerTest.java | 4 ++-- .../service/AdminWebsiteClubSheetImportServiceTest.java | 9 +++++++-- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/main/java/gg/agit/konect/admin/website/dto/AdminWebsiteClubSheetImportConfirmRequest.java b/src/main/java/gg/agit/konect/admin/website/dto/AdminWebsiteClubSheetImportConfirmRequest.java index 0dc4d9ce..c61d134c 100644 --- a/src/main/java/gg/agit/konect/admin/website/dto/AdminWebsiteClubSheetImportConfirmRequest.java +++ b/src/main/java/gg/agit/konect/admin/website/dto/AdminWebsiteClubSheetImportConfirmRequest.java @@ -33,7 +33,7 @@ public record ConfirmClub( @Size(max = 30) String description, - @NotBlank + @NotNull String introduce, @NotBlank diff --git a/src/main/java/gg/agit/konect/admin/website/service/AdminWebsiteClubSheetImportService.java b/src/main/java/gg/agit/konect/admin/website/service/AdminWebsiteClubSheetImportService.java index 323f15c0..88c36ef1 100644 --- a/src/main/java/gg/agit/konect/admin/website/service/AdminWebsiteClubSheetImportService.java +++ b/src/main/java/gg/agit/konect/admin/website/service/AdminWebsiteClubSheetImportService.java @@ -42,6 +42,7 @@ public class AdminWebsiteClubSheetImportService { private static final int TOPIC_MAX_LENGTH = 20; private static final int DESCRIPTION_MAX_LENGTH = 30; private static final int CATEGORY_EMOJI_MAX_LENGTH = 255; + private static final String EMPTY_INTRODUCE = ""; private static final int NAME_COLUMN_INDEX = 0; private static final int CATEGORY_COLUMN_INDEX = 1; private static final int CUSTOM_CATEGORY_COLUMN_INDEX = 2; @@ -119,7 +120,7 @@ public AdminWebsiteClubSheetImportResponse confirmImport( .name(name) .topic(limit(requiredText(club.topic(), "기타"), TOPIC_MAX_LENGTH)) .description(limit(requiredText(club.description(), name), DESCRIPTION_MAX_LENGTH)) - .introduce(requiredText(club.introduce(), club.description())) + .introduce(optionalText(club.introduce())) .categoryEmoji(limit( requiredText(club.categoryEmoji(), emojiOf(club.clubCategory())), CATEGORY_EMOJI_MAX_LENGTH @@ -166,7 +167,7 @@ private SheetClubImportPlan buildImportPlan(List rows) { category, topic, description, - description, + EMPTY_INTRODUCE, categoryEmoji, true )); @@ -284,6 +285,10 @@ private static String requiredText(String value, String fallback) { return value == null || value.isBlank() ? fallback : value.trim(); } + private static String optionalText(String value) { + return value == null ? "" : value.trim(); + } + private static String limit(String value, int maxLength) { if (value == null || value.length() <= maxLength) { return value; diff --git a/src/test/java/gg/agit/konect/unit/admin/website/controller/AdminWebsiteClubSheetImportControllerTest.java b/src/test/java/gg/agit/konect/unit/admin/website/controller/AdminWebsiteClubSheetImportControllerTest.java index d197ab7c..7b73cd25 100644 --- a/src/test/java/gg/agit/konect/unit/admin/website/controller/AdminWebsiteClubSheetImportControllerTest.java +++ b/src/test/java/gg/agit/konect/unit/admin/website/controller/AdminWebsiteClubSheetImportControllerTest.java @@ -41,7 +41,7 @@ void previewClubsReturnsServiceResponse() { ClubCategory.ACADEMIC, "dev", "dev club", - "dev club", + "", "IT", true )), @@ -69,7 +69,7 @@ void confirmImportReturnsServiceResponse() { ClubCategory.ACADEMIC, "dev", "dev club", - "dev club", + "", "IT", true ) diff --git a/src/test/java/gg/agit/konect/unit/admin/website/service/AdminWebsiteClubSheetImportServiceTest.java b/src/test/java/gg/agit/konect/unit/admin/website/service/AdminWebsiteClubSheetImportServiceTest.java index 803ea24b..b77532fd 100644 --- a/src/test/java/gg/agit/konect/unit/admin/website/service/AdminWebsiteClubSheetImportServiceTest.java +++ b/src/test/java/gg/agit/konect/unit/admin/website/service/AdminWebsiteClubSheetImportServiceTest.java @@ -95,6 +95,9 @@ void previewClubsReadsFixedSheetColumns() throws Exception { assertThat(preview.clubs().get(1).topic()).isEqualTo("기타"); assertThat(preview.clubs().get(1).categoryEmoji()).isEqualTo("⚽"); assertThat(preview.clubs().get(1).description()).isEqualTo("농구동아리 동아리입니다."); + assertThat(preview.clubs()) + .extracting(AdminWebsiteClubSheetImportPreviewResponse.PreviewClub::introduce) + .containsExactly("", ""); assertThat(preview.warnings()).hasSize(3); } @@ -121,7 +124,9 @@ void confirmImportSavesEnabledAndNonDuplicateClubsOnly() { assertThat(response.warnings()).anyMatch(warning -> warning.contains("농구동아리")); assertThat(response.warnings()).anyMatch(warning -> warning.contains("BCSD")); verify(webClubRepository).saveAll(org.mockito.ArgumentMatchers.>argThat(savedClubs -> - savedClubs.size() == 1 && savedClubs.getFirst().getName().equals("BCSD") + savedClubs.size() == 1 + && savedClubs.getFirst().getName().equals("BCSD") + && savedClubs.getFirst().getIntroduce().isEmpty() )); verifyNoInteractions(googleSheetsService); } @@ -168,7 +173,7 @@ private AdminWebsiteClubSheetImportConfirmRequest.ConfirmClub confirmClub( category, "dev", "dev club", - "dev club", + "", "IT", enabled );