34 lines
2.6 KiB
Markdown
34 lines
2.6 KiB
Markdown
# 국가 강제 지정 테스트 fixture 격리 PRD
|
|
|
|
## 문서 정보
|
|
- 상태: 구현 완료
|
|
- 작성일: 2026-11-06
|
|
- 결정권자: 사용자. 기존 리뷰의 권장 방향으로 수정 승인.
|
|
- 구현 계획: [plan-task.md](plan-task.md)
|
|
|
|
## 문제와 목표
|
|
일반 회원 fixture를 만드는 세 테스트가 운영 국가 강제 지정 ID 목록을 복사한다.
|
|
복사본 누락으로 일반 회원이 강제 지정 회원으로 선택될 수 있으며, 운영 목록 추가가 관련 없는 테스트 수정으로 이어진다.
|
|
목표는 세 fixture가 운영 ID를 중복 관리하지 않고 일반 회원을 선택하면서 독립된 정책/응답 기대값을 유지하는 것이다.
|
|
|
|
## 요구사항
|
|
| ID | 상태 | 요구사항 | 수용 기준 |
|
|
|---|---|---|---|
|
|
| COUNTRY-FIXTURE-001 | 확정 | 운영 ID 목록 복제 제거 | 세 fixture가 공통 test-only 판별 함수를 사용하고 목록 복사본이 없다. |
|
|
| COUNTRY-FIXTURE-002 | 확정 | 일반 회원과 강제 지정 회원 구분 | 일반 회원 100은 허용하고 KR 16/17958 및 JP 29721은 제외한다. 17958은 기존 통합 테스트 복사본 누락 회귀 사례다. |
|
|
| COUNTRY-FIXTURE-003 | 확정 | 독립된 검증 유지 | 기존 강제 지정 우선순위, 정규화, 기본값 및 홈/오디오 응답 assertion을 변경하지 않는다. |
|
|
| COUNTRY-FIXTURE-004 | 확정 | 운영 정책 보존 | production 파일/API/DB/config 변경이 없고 사용자의 기존 JP 45459 추가를 보존한다. |
|
|
|
|
## 구현 결정과 범위 밖
|
|
- test-only `Member.hasForcedCountryMapping()`은 서로 다른 KR/JP 헤더에 대해 기존 resolver가 헤더를 그대로 반환하는지 판별한다. 어느 하나라도 다르면 일반 회원 후보에서 제외한다.
|
|
- 이 함수는 fixture 선택용이다. 국가 정책과 응답의 기대값 계산에는 사용하지 않는다.
|
|
- 기존 세 후보 생성 반복문과 persistence 경로는 유지한다. 신규 dependency, 설정, production 추상화는 만들지 않는다.
|
|
- 개별 운영 ID 전체를 테스트에 열거하지 않는다. 회귀 입력 ID는 대표 사례이지 동기화할 운영 목록이 아니다.
|
|
- 전체 테스트는 저장소 규칙에 따라 사용자가 실행한다. 이번 작업은 focused policy 및 직접 영향받는 HTTP 테스트를 실행한다.
|
|
|
|
## 완료 기준
|
|
- [x] 세 fixture의 운영 목록 복사본 제거.
|
|
- [x] 누락 ID 회귀 RED/GREEN과 일반/강제 회원 판별 검증.
|
|
- [x] 기존 policy/DB 및 홈/오디오 MockMvc 검증 통과.
|
|
- [x] production 보존, 독립 리뷰, 검증 한계 기록 및 소유 QA 자원 정리.
|