refactor: StudyLogDailyMission, DailyMission, Mission 기능 전반 Kotlin 마이그레이션(#122)#125
refactor: StudyLogDailyMission, DailyMission, Mission 기능 전반 Kotlin 마이그레이션(#122)#125chaiminwoo0223 merged 1 commit intodevelopfrom
Conversation
…그레이션(#122) * feat: StudyLogDailyMissionQueryService.kt, StudyLogDailyMissionCommandService.kt 구현 * feat: StudyLogDailyMissionRepository.kt, StudyLogDailyMissionJpaRepository.kt, StudyLogDailyMissionRepositoryAdapter.kt 구현 * feat: StudyLogDailyMissionFactory.kt 구현 * feat: DailyMissionQueryService.kt, DailyMissionCommandService.kt 구현 * feat: DailyMissionRepository.kt, DailyMissionJpaRepository.kt, DailyMissionRepositoryAdapter.kt 구현 * feat: DailyMissionErrorCode.kt, DailyMissionPolicy.kt 구현 * feat: DailyMissionFactory 구현 * feat: MissionController.kt 구현 * feat: MissionFacade.kt 구현 * feat: MissionQueryService.kt, MissionCommandService.kt 구현 * feat: MissionRepository.kt, MissionJpaRepository.kt, MissionRepositoryAdapter.kt 구현 * feat: MissionErrorCode.kt, MissionPolicy.kt 구현 * feat: MissionFactory.kt 구현 * feat: StudyLogDailyMissionInfo.kt DTO 추가 * feat: DailyMissionInfo DTO 추가 * feat: CreateMissionRequest.kt, UpdateMissionRequest.kt DTO 추가 * feat: CreateMissionResponse.kt, LoadMissionInfoResponse.kt DTO 추가 * feat: MissionInfo.kt, MissionsInfo.kt DTO 추가 * refactor: record → data class 전환에 따른 DTO 접근자 호출 방식(x() → getX()) 수정 * refactor: java studylog application 패키지 제거 (Kotlin 마이그레이션 완료) * refactor: java studylog infra jpa 패키지 제거 (Kotlin 마이그레이션 완료) * refactor: java studylog domain factory 패키지 제거 (Kotlin 마이그레이션 완료) * refactor: java mission presentation, application 패키지 제거 (Kotlin 마이그레이션 완료) * refactor: java mission infra jpa 패키지 제거 (Kotlin 마이그레이션 완료) * refactor: java mission domain error, policy 패키지 제거 (Kotlin 마이그레이션 완료) * test: StudyLogDailyMissionFixture.kt 추가 * test: StudyLogDailyMissionTestHelper.kt 추가 * test: StudyLogDailyMissionQueryServiceTest.kt, StudyLogDailyMissionCommandServiceTest.kt 단위 테스트 추가 * test: DailyMissionFixture.kt 추가 * test: DailyMissionTestHelper.kt 추가 * test: DailyMissionQueryServiceTest.kt, DailyMissionCommandServiceTest.kt 단위 테스트 추가 * test: MissionFixture.kt, CreateMissionRequestFixture.kt, UpdateMissionRequestFixture.kt 추가 * test: MissionTestHelper 추가 * test: MissionQueryServiceTest.kt, MissionCommandServiceTest.kt 단위 테스트 추가 * test: MissionControllerIntegrationTest 통합 테스트 추가 * test: test java studylog 패키지 제거 (Kotlin 마이그레이션 완료) * test: test java mission 패키지 제거 (Kotlin 마이그레이션 완료) * test: StudyLogControllerIntegrationTest.kt IssuePresignedUrl 통합 테스트 개선 * test: StudyLogControllerIntegrationTest.kt ConfirmImage 통합 테스트 개선
hisonghy
left a comment
There was a problem hiding this comment.
Fixture 클래스에서 object를 지양하는 이유가 궁금합니다!
처음에는 이를 처음 인지하게 된 것은 이 문제를 해결하기 위해 기존 Java 테스트 코드의 형태와 가장 유사한 |
설명 감사합니다~ |
📌 작업 내용 및 특이사항
✅ Java → Kotlin 마이그레이션 개요
StudyLogDailyMission,DailyMission,Mission전반을 Java → Kotlin으로 마이그레이션했습니다.Kotlin–Java 혼용 환경에서도 안정적으로 동작하도록 구조를 정리하는 데 초점을 맞췄습니다.정적 팩토리 메서드(of, from)와도메인 책임 구조(Factory, Policy, Service, Facade)를 최대한 유지했습니다.✅ 테스트 코드 Kotlin 마이그레이션
누락된 케이스(완료 상태 검증)를 추가했습니다.접근자 차이(getter 인식 문제, record → data class 전환에 따른 호출 방식 변화 등)를 테스트 단계에서 먼저 확인했습니다.object사용을 지양하고,class + DSL(withXXX) 패턴으로 통일하여 테스트 간 상태 공유 문제를 해결했습니다.✅
@JvmStatic적용으로 인한 Java ↔ Kotlin 정적 호출 문제 해결object에 정의된 메서드는 JVM 레벨에서 기본적으로INSTANCE.create()형태로 노출됩니다.xxxFactory.create()형태의정적(static) 호출 방식을 사용하고 있었습니다.@JvmStatic을 적용하여,create()메서드가 JVM 레벨의 static 메서드로 노출되도록 변경하여 문제를 해결했습니다.@JvmStatic을 제거할 예정입니다.✅ StudyLogDailyMission 도메인 Kotlin 마이그레이션
StudyLogDailyMissionQueryService,StudyLogDailyMissionCommandServiceKotlin 전환StudyLogDailyMissionRepository,StudyLogDailyMissionJpaRepository,StudyLogDailyMissionRepositoryAdapterKotlin 전환StudyLogDailyMissionFactoryKotlin 전환✅ DailyMission 도메인 Kotlin 마이그레이션
DailyMissionQueryService,DailyMissionCommandServiceKotlin 전환DailyMissionRepository,DailyMissionJpaRepository,DailyMissionRepositoryAdapterKotlin 전환DailyMissionErrorCode,DailyMissionPolicyKotlin 전환DailyMissionFactoryKotlin 전환✅ Mission 도메인 Kotlin 마이그레이션
MissionControllerKotlin 전환MissionFacade,MissionQueryService,MissionCommandServiceKotlin 전환MissionRepository,MissionJpaRepository,MissionRepositoryAdapterKotlin 전환MissionErrorCode,MissionPolicyKotlin 전환MissionFactoryKotlin 전환✅ DTO Kotlin 마이그레이션
StudyLogDailyMissionInfoKotlin 전환DailyMissionInfoKotlin 전환CreateMissionRequest,UpdateMissionRequestKotlin 전환CreateMissionResponse,LoadMissionInfoResponseKotlin 전환MissionInfo,MissionsInfoKotlin 전환🌱 관련 이슈
🔍 참고사항(선택)
학습 로그 ID 검증 케이스를 추가했습니다.📚 기타(선택)