Conversation
Walkthrough테스트에서 ClassRoomControllerTest가 Long ID 대신 UUID를 사용하도록 변경되었고, 프로덕션 설정에서 spring.jpa.hibernate.ddl-auto가 update에서 none으로 수정되었습니다. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Suggested labels
Poem
✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
src/test/java/hello/cluebackend/domain/classroom/presentation/ClassRoomControllerTest.java (2)
38-41: UUID 전환은 도메인 모델과 정합 — 테스트 재현성 향상을 위해 상수 UUID 사용 권장랜덤 UUID 사용은 문제는 없지만, 고정 값을 쓰면 재현성과 가독성이 좋아집니다. 또한 상호작용 검증을 추가하면 테스트 의도가 더 명확해집니다.
- UUID userId = UUID.randomUUID(); - - UUID classRoomId1 = UUID.randomUUID(); - UUID classRoomId2 = UUID.randomUUID(); + UUID userId = UUID.fromString("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"); + UUID classRoomId1 = UUID.fromString("11111111-1111-1111-1111-111111111111"); + UUID classRoomId2 = UUID.fromString("22222222-2222-2222-2222-222222222222");추가 권장(코드 참고용):
// then 이후에 상호작용 검증 // import static org.mockito.Mockito.verify; verify(jwtUtil).getToken(mockRequest); verify(jwtUtil).getUserId(token); verify(classRoomService).findMyClassRoomById(userId);
49-57: DTO 빌더의 classRoomId 세팅은 적절 — 기본값(booleans)의 암묵성 줄이기isActivation은 primitive boolean이라 기본값(false)로 들어갑니다. 테스트 의도를 드러내려면 명시하는 편이 좋습니다. 또한 두 카드의 name을 구분하면(예: "자바반 A"/"자바반 B") 순서·콘텐츠 검증이 더 견고해집니다.
ClassRoomCardDto.builder() .classRoomId(classRoomId1) - .name("자바를 자바라") + .name("자바반 A") .sort("JAVA") .target("2-2") .studentCount(2) + .isActivation(true) .build(), ClassRoomCardDto.builder() .classRoomId(classRoomId2) - .name("자바를 자바라") + .name("자바반 B") .sort("JAVA") .target("2-1") .studentCount(2) + .isActivation(true) .build()보강 검증(참고):
assertThat(response.getBody().get(0).getClassRoomId()).isNotNull();
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (2)
src/main/resources/application-dep.yml(1 hunks)src/test/java/hello/cluebackend/domain/classroom/presentation/ClassRoomControllerTest.java(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-07-13T16:08:21.631Z
Learnt from: Hgyeol
PR: EscapeFrame/clueBackend#36
File: src/main/java/hello/cluebackend/domain/classroom/presentation/ClassRoomController.java:34-39
Timestamp: 2025-07-13T16:08:21.631Z
Learning: In this Spring Boot application, JWT validation is handled at the filter level before requests reach the controllers, so JWT token extraction and user ID retrieval in controllers like ClassRoomController don't require additional exception handling for invalid or missing tokens.
Applied to files:
src/test/java/hello/cluebackend/domain/classroom/presentation/ClassRoomControllerTest.java
🧬 Code graph analysis (1)
src/test/java/hello/cluebackend/domain/classroom/presentation/ClassRoomControllerTest.java (3)
src/main/java/hello/cluebackend/domain/classroom/domain/ClassRoom.java (1)
Entity(15-86)src/main/java/hello/cluebackend/domain/classroom/service/ClassRoomService.java (1)
findMyClassRoomById(40-47)src/main/java/hello/cluebackend/domain/classroom/presentation/dto/ClassRoomCardDto.java (1)
Getter(7-19)
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
src/main/resources/application-prod.yml (1)
7-9: application-prod.yml에서 프로필 활성화 키는 중복 설정입니다.파일명이 이미
application-prod.yml이므로spring.config.activate.on-profile: prod는 불필요하며 혼동 소지가 있습니다. 삭제를 권장합니다.적용 패치:
config: activate: - on-profile: prod + # (prod 전용 파일이므로 on-profile 키 불필요)또는 아래 블록 자체를 제거해도 됩니다.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (1)
src/main/resources/application-prod.yml(1 hunks)
| jpa: | ||
| hibernate: | ||
| ddl-auto: update | ||
| ddl-auto: none |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
prod 환경에서 hbm2ddl 비활성화는 바람직. 다만 마이그레이션 경로(예: Flyway/Liquibase) 확보 필요.
ddl-auto: none은 운영에서 자동 스키마 변경을 막아 안전합니다. 단, 스키마 드리프트를 막으려면 Flyway/Liquibase 기반 배포 마이그레이션이 필수입니다.- 운영 실수 방지를 위해
none대신validate로 두면 스키마 불일치 시 애플리케이션이 즉시 실패하여 문제를 조기에 드러낼 수 있습니다. 선택지로 검토해주세요.
다음 스크립트로 마이그레이션 도구 사용 여부와 다른 프로필의 ddl-auto 설정을 점검해 주세요.
원하시면 validate로 바꾸는 간단 패치입니다:
- ddl-auto: none
+ ddl-auto: validate🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== Flyway/Liquibase 의존성 및 설정 탐지 =="
rg -n -C2 -g '!**/build/**' -g '!**/target/**' -e 'org\.flywaydb|flyway|liquibase' build.gradle* pom.xml || true
rg -n -C2 -g '!**/build/**' -g '!**/target/**' -e 'spring\.flyway|spring\.liquibase' -S src/main/resources || true
echo
echo "== 프로필별 ddl-auto 설정 확인 =="
rg -n -C1 -S 'ddl-auto' src/main/resources || trueLength of output: 980
prod 프로파일에서 마이그레이션 도구 추가 및 ddl-auto 설정 검토
application-prod.yml(src/main/resources)에서ddl-auto: none은 운영에서 자동 스키마 변경을 막아 적절하지만,build.gradle또는pom.xml에 Flyway/Liquibase 의존성이 전혀 없습니다. 운영 스키마 관리를 위해 마이그레이션 도구를 도입해 주세요.- 참고: 다른 프로파일 설정
application-dev.yml:ddl-auto: validateapplication-dep.yml:ddl-auto: none
- 운영 중 스키마 불일치 탐지를 위해
none대신validate설정 검토 가능(마이그레이션 적용 보장 필요).
- ddl-auto: none
+ ddl-auto: validate📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ddl-auto: none | |
| ddl-auto: validate |
Summary by CodeRabbit
테스트
Chores