test(content-all): 전체 탭 API 통합 경로를 검증한다
This commit is contained in:
@@ -521,7 +521,7 @@ interface MainContentAllQueryPort {
|
||||
|
||||
### Phase 5: 공개 API 통합 검증
|
||||
|
||||
- [ ] **Task 5.1: controller-to-repository 통합 테스트 작성**
|
||||
- [x] **Task 5.1: controller-to-repository 통합 테스트 작성**
|
||||
- Files:
|
||||
- Test: `src/test/kotlin/kr/co/vividnext/sodalive/v2/api/content/all/adapter/in/web/MainContentAllEndToEndTest.kt`
|
||||
- RED: Spring context 기반으로 `GET /api/v2/audio/contents?type=AUDIO&sort=LATEST&page=0&size=20`가 `audios`, `totalCount`, `sort`, `page`, `size`, `hasNext`를 반환하고 `series`는 빈 배열인 테스트를 작성한다.
|
||||
@@ -531,8 +531,11 @@ interface MainContentAllQueryPort {
|
||||
- GREEN: 테스트 fixture에 공개/비공개/성인/무료/포인트/요일별 시리즈/오리지널 시리즈/차단 관계 데이터를 구성하고 end-to-end 응답을 통과시킨다.
|
||||
- REFACTOR: controller, facade, service, repository 경계가 단방향 의존을 유지하는지 import를 확인한다.
|
||||
- 기대 결과: 실제 HTTP 경로에서 PRD의 주요 응답 계약이 검증된다.
|
||||
- 검증 기록:
|
||||
- GREEN: `./gradlew test --tests kr.co.vividnext.sodalive.v2.api.content.all.adapter.in.web.MainContentAllEndToEndTest` 성공으로 `AUDIO`, `SERIES dayOfWeek=MON`, `ORIGINAL dayOfWeek 무시` HTTP 통합 경로를 확인했다.
|
||||
- 참고: Phase 1-4 구현이 이미 존재해 신규 E2E 추가 직후 타깃 테스트가 GREEN으로 통과했으므로, 별도 production 수정은 없었다.
|
||||
|
||||
- [ ] **Task 5.2: 회귀 테스트와 포맷 검증**
|
||||
- [x] **Task 5.2: 회귀 테스트와 포맷 검증**
|
||||
- Files:
|
||||
- Verify: `src/main/kotlin/kr/co/vividnext/sodalive/v2/api/content/all/**`
|
||||
- Verify: `src/main/kotlin/kr/co/vividnext/sodalive/v2/content/all/**`
|
||||
@@ -549,6 +552,12 @@ interface MainContentAllQueryPort {
|
||||
- GREEN: 위 명령이 모두 성공하고, 응답 DTO에 제거 대상 필드가 남아 있지 않음을 확인한다.
|
||||
- REFACTOR: 검증 결과를 이 문서 하단 `검증 기록`에 누적한다.
|
||||
- 기대 결과: 신규 API 패키지 테스트와 포맷 검증이 완료된다.
|
||||
- 검증 기록:
|
||||
- GREEN: `./gradlew test --tests 'kr.co.vividnext.sodalive.v2.content.all.*'` 성공.
|
||||
- GREEN: `./gradlew test --tests 'kr.co.vividnext.sodalive.v2.api.content.all.*'` 성공.
|
||||
- GREEN: `./gradlew ktlintCheck` 성공.
|
||||
- GREEN: `git diff --check` 성공.
|
||||
- 확인: `rg -n "duration|publishedDaysOfWeek|isProceeding|contentCount|paidContentCount" src/main/kotlin/kr/co/vividnext/sodalive/v2/api/content/all src/test/kotlin/kr/co/vividnext/sodalive/v2/api/content/all` 실행 시 공개 DTO 소스에는 제거 대상 필드가 없고, E2E fixture의 공개 조건 설정과 DTO 테스트의 부재 검증만 검색되었다.
|
||||
|
||||
---
|
||||
|
||||
@@ -594,3 +603,12 @@ interface MainContentAllQueryPort {
|
||||
- GREEN: `git diff --check` 성공.
|
||||
- 확인: `rg -n "duration|publishedDaysOfWeek|isProceeding|contentCount|paidContentCount" src/main/kotlin/kr/co/vividnext/sodalive/v2/api/content/all src/test/kotlin/kr/co/vividnext/sodalive/v2/api/content/all` 실행 시 공개 DTO 소스에는 제거 대상 필드가 없고, DTO 테스트의 부재 검증만 검색되었다.
|
||||
- 확인: 위 리뷰 항목 2건은 보강 테스트와 구현 수정으로 해결했다.
|
||||
- 2026-06-25 Phase 5 공개 API 통합 검증
|
||||
- GREEN: `./gradlew test --tests kr.co.vividnext.sodalive.v2.api.content.all.adapter.in.web.MainContentAllEndToEndTest` 성공으로 실제 HTTP 경로에서 `AUDIO`는 `audios`와 빈 `series`, `SERIES dayOfWeek=MON`은 `series`와 빈 `audios`, `ORIGINAL dayOfWeek=MON`은 `dayOfWeek=null`과 오리지널 시리즈만 반환함을 확인했다.
|
||||
- 참고: Phase 1-4 구현이 이미 존재해 신규 E2E 추가 직후 타깃 테스트가 GREEN으로 통과했으며, Phase 5에서 production 코드는 변경하지 않았다.
|
||||
- 참고: `./gradlew test --tests 'kr.co.vividnext.sodalive.v2.content.all.*'`와 `./gradlew test --tests 'kr.co.vividnext.sodalive.v2.api.content.all.*'`를 동시에 실행했을 때 test result XML 파일 쓰기 충돌이 한 번 발생했다. 동일 명령을 순차 재실행해 두 테스트 모두 성공함을 확인했다.
|
||||
- GREEN: `./gradlew test --tests 'kr.co.vividnext.sodalive.v2.content.all.*'` 성공.
|
||||
- GREEN: `./gradlew test --tests 'kr.co.vividnext.sodalive.v2.api.content.all.*'` 성공.
|
||||
- GREEN: `./gradlew ktlintCheck` 성공.
|
||||
- GREEN: `git diff --check` 성공.
|
||||
- 확인: `rg -n "duration|publishedDaysOfWeek|isProceeding|contentCount|paidContentCount" src/main/kotlin/kr/co/vividnext/sodalive/v2/api/content/all src/test/kotlin/kr/co/vividnext/sodalive/v2/api/content/all` 실행 시 공개 DTO 소스에는 제거 대상 필드가 없고, E2E fixture의 공개 조건 설정과 DTO 테스트의 부재 검증만 검색되었다.
|
||||
|
||||
Reference in New Issue
Block a user