Skip to content

[fix/#505] 부모임장 추가에 따른 운동 API 로직 수정#508

Merged
Dimo-2562 merged 17 commits intodevelopfrom
fix/#505
Mar 3, 2026
Merged

[fix/#505] 부모임장 추가에 따른 운동 API 로직 수정#508
Dimo-2562 merged 17 commits intodevelopfrom
fix/#505

Conversation

@Dimo-2562
Copy link
Contributor

❤️ 기능 설명

[핵심 변경] 운동 삭제/수정 권한 확장

  • 기존: 운동 삭제/수정은 모임장만 가능
  • 변경: 운동 생성/멤버 수정과 동일하게 부모임장도 사용 가능하도록 수정
  • ExerciseValidatorvalidateDeleteExercise, validateUpdateExercise에서
    validateManagerPermissionvalidateSubManagerPermission으로 변경
  • 기존의 모임장 전용 validateManagerPermission 메서드 제거

[부가 변경] 테스트 추가

  • Classist 방식 단위 테스트: ExerciseLifecycleService, ExerciseParticipationService, ExerciseCommandService
  • 통합 테스트: 운동 생성/삭제/수정/특정 참여자 취소 전 케이스
  • BaseResponse.of() 추가: ResponseEntity 래핑으로 HTTP status 정상 반환
  • Member 컬렉션 필드 @Builder.Default 추가: 빌더 사용 시 NPE 방지

연결된 issue

연결된 issue를 자동으로 닫기 위해 아래 {이슈넘버}를 입력해주세요.

close #505



🩷 Approve 하기 전 확인해주세요!

  • 다른 API들도 ResponseEntity로 감싸서 status를 반영하면 좋을 거 같습니다.

✅ 체크리스트

  • PR 제목 규칙 잘 지켰는가?
  • 추가/수정사항을 설명하였는가?
  • 테스트 결과 사진을 넣었는가?
  • 이슈넘버를 적었는가?

Dimo-2562 added 17 commits March 2, 2026 20:46
기존에 운동 생성 및 운동 멤버 수정은 이미 부모임장도 사용 가능
- Classist 방식으로 ExerciseValidator, ExerciseConverter는 실제 인스턴스 사용
- 인프라 의존성(MemberPartyRepository, ExerciseRepository, ImageService)는 Mock 처리
- 성공: 모임장/부모임장의 운동 생성 케이스
- 실패: 비활성 파티, 권한 없음, 시간 역전, 과거 시간
- Party, Member 조회 후 ExerciseLifecycleService 위임 검증
- 존재하지 않는 파티 → PARTY_NOT_FOUND 예외 검증
- 존재하지 않는 멤버 → MEMBER_NOT_FOUND 예외 검증
- IntegrationTestBase 상속, MockMvc로 HTTP 레이어 전체 검증
- 성공: 모임장/부모임장 운동 생성 (201)
- 실패: 존재하지 않는 파티(404), 존재하지 않는 멤버(404), 비활성 파티(400), 권한 없는 멤버(403), 시간 역전(400), 과거 시간(400)
- 성공: 모임장/부모임장 삭제 케이스 (exerciseRepository.delete, partyRepository.save 호출 검증)
- 실패: 권한 없는 일반 멤버 → INSUFFICIENT_PERMISSION 예외 검증
- Exercise, Member 조회 후 ExerciseLifecycleService 위임 검증
- 존재하지 않는 운동 → EXERCISE_NOT_FOUND 예외 검증
- 존재하지 않는 멤버 → MEMBER_NOT_FOUND 예외 검증
- 모임장/부모임장 삭제 성공 (200, deletedExerciseId 반환)
- 존재하지 않는 운동 404 (EXERCISE_NOT_FOUND)
- SecurityContext 멤버 DB 미존재 404 (MEMBER_NOT_FOUND)
- 일반 멤버 삭제 시 403 (INSUFFICIENT_PERMISSION)
- 모임장/부모임장 수정 성공
- 일반 멤버 수정 시 INSUFFICIENT_PERMISSION
- 이미 시작된 운동 수정 시 EXERCISE_ALREADY_STARTED_UPDATE
- 시간 역전 시 INVALID_EXERCISE_TIME
- 과거 날짜 수정 시 PAST_TIME_NOT_ALLOWED
- 성공: Exercise, Member 조회 후 ExerciseLifecycleService에 위임
- 실패: EXERCISE_NOT_FOUND, MEMBER_NOT_FOUND
- 성공: 모임장 200, 부모임장 200
- 실패: EXERCISE_NOT_FOUND 404, MEMBER_NOT_FOUND 404, 일반 멤버 403, 이미 시작된 운동 400, 시간 역전 400, 과거 날짜 400
- ExerciseParticipationService: cancelParticipationByManager
  - 모임장/부모임장 멤버 취소 성공
  - 모임장 게스트 취소 성공
  - 일반 멤버 취소 시 INSUFFICIENT_PERMISSION
  - 이미 시작된 운동 취소 시 EXERCISE_ALREADY_STARTED_CANCEL
  - 존재하지 않는 멤버 참여자 MEMBER_NOT_FOUND
  - 존재하지 않는 게스트 GUEST_NOT_FOUND
- GuestFixture 추가
    - ExerciseParticipationService 위임 성공
    - EXERCISE_NOT_FOUND, MEMBER_NOT_FOUND
- 모임장/부모임장 멤버 취소 성공 (200)
- 모임장 게스트 취소 성공 (200)
- 존재하지 않는 운동 404 (EXERCISE_NOT_FOUND)
- SecurityContext 멤버 DB 미존재 404 (MEMBER_NOT_FOUND)
- 일반 멤버 취소 시 403 (INSUFFICIENT_PERMISSION)
- 이미 시작된 운동 취소 시 400 (EXERCISE_ALREADY_STARTED_CANCEL)
@Dimo-2562 Dimo-2562 requested review from dbalsk and kanghana1 March 2, 2026 15:38
@Dimo-2562 Dimo-2562 self-assigned this Mar 2, 2026
Copy link
Contributor

@kanghana1 kanghana1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다~!

}

public static <T> ResponseEntity<BaseResponse<T>> of(BaseCode code) {
return of(code, null);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아 이렇게 한 번 감싼거구나 !! 좋아요

private List<MemberAddr> addresses = new ArrayList<>();

@OneToMany(mappedBy = "member", cascade = CascadeType.ALL)
@Builder.Default
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

감사합니다

@Dimo-2562 Dimo-2562 merged commit 55a11fc into develop Mar 3, 2026
1 check passed
@Dimo-2562 Dimo-2562 deleted the fix/#505 branch March 3, 2026 10:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FIX] 부모임장 추가에 따른 운동 API 로직 수정

2 participants