From 2dff3b8af0b7142448ac1034edfdeb8d373ecf57 Mon Sep 17 00:00:00 2001 From: LeeJeongHeon02 Date: Tue, 21 Jul 2026 13:57:36 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=ED=8C=80=EB=AA=85=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EC=8B=9C=20=EC=95=9E=EB=92=A4=20=EA=B3=B5=EB=B0=B1?= =?UTF-8?q?=20=EC=A0=9C=EA=B1=B0=20=EB=88=84=EB=9D=BD=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 로컬 서버를 띄워 PATCH /api/v1/teams/{teamId}를 실제로 호출하며 QA하다가 발견 - " 이름 " 처럼 앞뒤에 공백이 있는 teamName을 그대로 저장하고 있었다. 팀 생성 API(TeamCreateCommand)는 이미 Texts.trim()으로 teamName을 정리하는데 이번에 추가한 renameTeam()만 빠뜨렸다. 같은 유틸을 적용해 동작을 맞췄다. Co-Authored-By: Claude Sonnet 5 --- .../team/service/TeamMemberManagementService.java | 3 ++- .../service/TeamMemberManagementServiceTest.java | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/shinhan/klljs/domain/team/service/TeamMemberManagementService.java b/src/main/java/com/shinhan/klljs/domain/team/service/TeamMemberManagementService.java index 25b8b4e..bc793ca 100644 --- a/src/main/java/com/shinhan/klljs/domain/team/service/TeamMemberManagementService.java +++ b/src/main/java/com/shinhan/klljs/domain/team/service/TeamMemberManagementService.java @@ -15,6 +15,7 @@ import com.shinhan.klljs.domain.team.repository.TeamRepository; import com.shinhan.klljs.global.apiPayload.code.GeneralErrorCode; import com.shinhan.klljs.global.apiPayload.exception.GeneralException; +import com.shinhan.klljs.global.util.Texts; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -72,7 +73,7 @@ public TeamRenameResponse renameTeam(Long requesterId, Long teamId, String teamN throw new GeneralException(TeamErrorCode.TEAM_SETTINGS_FORBIDDEN); } - team.rename(teamName); + team.rename(Texts.trim(teamName)); return TeamRenameResponse.of(team); } diff --git a/src/test/java/com/shinhan/klljs/domain/team/service/TeamMemberManagementServiceTest.java b/src/test/java/com/shinhan/klljs/domain/team/service/TeamMemberManagementServiceTest.java index 5273072..1b6d1c7 100644 --- a/src/test/java/com/shinhan/klljs/domain/team/service/TeamMemberManagementServiceTest.java +++ b/src/test/java/com/shinhan/klljs/domain/team/service/TeamMemberManagementServiceTest.java @@ -122,6 +122,18 @@ void renameTeam_allowsOwnerAndAdminButRejectsMember() { assertThat(team.getTeamName()).isEqualTo("관리자가 바꾼 팀명"); } + @Test + void renameTeam_trimsEdgeWhitespace() { + Team team = persistTeam(TeamStatus.ACTIVE); + TeamMember owner = persistMember(team, "오너", "owner@example.com", TeamMemberRole.OWNER, TeamMemberStatus.ACTIVE); + entityManager.flush(); + + TeamRenameResponse response = service.renameTeam(owner.getUser().getId(), team.getId(), " 공백 팀명 "); + + assertThat(response.teamName()).isEqualTo("공백 팀명"); + assertThat(team.getTeamName()).isEqualTo("공백 팀명"); + } + @Test void removeAndLeave_changeMembershipStatuses() { Team team = persistTeam(TeamStatus.ACTIVE); From 0e67e1427db53f9a96f3031e6edfe60bb8db69b2 Mon Sep 17 00:00:00 2001 From: LeeJeongHeon02 Date: Tue, 21 Jul 2026 14:47:10 +0900 Subject: [PATCH 2/2] =?UTF-8?q?test:=20=ED=8C=80=EB=AA=85=20trim=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=EA=B0=80=20=EC=8B=A4=EC=A0=9C=20DB?= =?UTF-8?q?=20=EB=B0=98=EC=98=81=EC=9D=84=20=EA=B2=80=EC=A6=9D=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=B4=EA=B0=95=20(=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=20=EB=B0=98=EC=98=81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CodeRabbit 지적 - 기존 테스트는 flush 없이 영속성 컨텍스트에 남아있는 같은 Team 인스턴스를 검사해서, 실제로 DB에 반영됐는지가 아니라 메모리 상태만 확인하고 있었다. flush+clear 후 다시 조회하도록 고쳤다 - 같은 파일의 leaveTeam_allowsSoleOwnerToLeaveWithoutTransfer 테스트와 동일한 패턴이다. Co-Authored-By: Claude Sonnet 5 --- .../domain/team/service/TeamMemberManagementServiceTest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/shinhan/klljs/domain/team/service/TeamMemberManagementServiceTest.java b/src/test/java/com/shinhan/klljs/domain/team/service/TeamMemberManagementServiceTest.java index 1b6d1c7..0a696da 100644 --- a/src/test/java/com/shinhan/klljs/domain/team/service/TeamMemberManagementServiceTest.java +++ b/src/test/java/com/shinhan/klljs/domain/team/service/TeamMemberManagementServiceTest.java @@ -129,9 +129,12 @@ void renameTeam_trimsEdgeWhitespace() { entityManager.flush(); TeamRenameResponse response = service.renameTeam(owner.getUser().getId(), team.getId(), " 공백 팀명 "); + entityManager.flush(); + entityManager.clear(); assertThat(response.teamName()).isEqualTo("공백 팀명"); - assertThat(team.getTeamName()).isEqualTo("공백 팀명"); + // 영속성 컨텍스트를 비우고 다시 조회해서, 메모리상 엔티티 상태가 아니라 실제 DB 반영 여부를 확인한다. + assertThat(entityManager.find(Team.class, team.getId()).getTeamName()).isEqualTo("공백 팀명"); } @Test