Skip to content

Conversation

@naringst
Copy link

@naringst naringst commented Oct 26, 2025

new PR : #62

@naringst naringst self-assigned this Oct 26, 2025
- Epic: 반복 일정 종료 관리
- Stories: 3개 (종료 조건 설정, 검증, 수정/표시)
- Flows: 9개 (Normal: 8, Exception: 1)
- 종료 날짜 기본값: 2025-12-31
- 종료 날짜 검증 규칙 포함
- 총 10개 테스트 케이스 설계
- Story 1: 종료 조건 설정 (4 TCs)
- Story 2: 종료 조건 검증 (3 TCs)
- Story 3: 종료 날짜 수정/표시 (3 TCs)
- Mock 데이터 및 검증 기준 정의
- 엣지 케이스 7개 식별
…tion 1)

- 10개 통합 테스트 케이스 작성 완료
- Story 1: 반복 종료 조건 설정 (4 TCs)
- Story 2: 반복 종료 조건 검증 (3 TCs)
- Story 3: 종료 날짜 수정/표시 (3 TCs)
- MSW를 사용한 API 모킹 설정
- 테스트는 Red 상태 (기능 미구현, TDD 예상 동작)
- Stage 7-8에서 구현을 통해 Green으로 전환 예정
- 3개 유닛 테스트 후보 식별
- validateRepeatEndDate: 종료 날짜 검증 (6 TCs)
- getRepeatEndDate: 기본값/최대값 처리 (8 TCs)
- generateRecurringEventsUntilEndDate: 종료까지 생성 (7 TCs)
- 총 21개 유닛 테스트 케이스 예상
- UI/API 로직은 통합 테스트로 충분하여 제외
- 3개 함수에 대한 상세 테스트 설계 완료
- validateRepeatEndDate: 날짜 검증 (6 TCs)
- getRepeatEndDate: 기본값/최대값 처리 (8 TCs)
- generateRecurringEventsUntilEndDate: 종료까지 생성 (7 TCs)
- 총 21개 유닛 테스트 케이스 설계
- 엣지 케이스, 경계값, 검증 기준 모두 정의
- 3개 유닛 테스트 파일 작성 완료
- repeatValidation.spec.ts: 날짜 검증 (6 TCs)
- repeatDateUtils.endDate.spec.ts: 기본값/최대값 처리 (8 TCs)
- repeatScheduler.endDate.spec.ts: 종료까지 생성 (7 TCs)
- 총 21개 유닛 테스트 케이스 구현
- Linter 에러 없음
- 함수는 Stage 7에서 TDD로 구현 예정
- 3개 유틸리티 함수 구현 완료 (TDD)
- validateRepeatEndDate: 종료 날짜 검증 로직
- getRepeatEndDate: 기본값(2025-12-31) 및 최대값 처리
- generateRecurringEventsUntilEndDate: 종료 날짜까지 생성
- 21/21 유닛 테스트 모두 통과 ✓
- Linter 에러 없음
- 종료 날짜 기능 App.tsx와 통합 완료
- useEventOperations에 검증 및 생성 로직 추가
- validateRepeatEndDate: 시작 날짜 이전 검증 (TC-3-2-1 통과)
- getRepeatEndDate: 기본값/최대값 처리
- generateRecurringEventsUntilEndDate: 종료까지 생성
- 통합 테스트 3/10 통과 (진행 중)
  - ✓ TC-3-1-1: UI 표시
  - ✓ TC-3-1-2: UI 숨김
  - ✓ TC-3-2-1: 검증 에러
  - ⚠️ 나머지 7개: date input 상호작용 이슈

orchestrator 워크플로우 Stage 1-7 완료 ✓
Stage 8은 추가 개선 필요
- Epic: 반복 일정 수정 관리
- Stories: 3개
  - Story-4-1: 단일 반복 일정 수정 (3 flows)
  - Story-4-2: 전체 반복 일정 수정 (3 flows)
  - Story-4-3: 수정 확인 다이얼로그 표시 (4 flows)
- Flows: 10개 (Normal: 10, Exception: 0)
- 핵심: 단일/전체 수정 분기, 반복 속성 관리, 다이얼로그 UI
- 총 10개 테스트 케이스 설계
- Story 1: 단일 반복 일정 수정 (3 TCs)
- Story 2: 전체 반복 일정 수정 (3 TCs)
- Story 3: 수정 확인 다이얼로그 표시 (4 TCs)
- Mock 데이터 및 검증 기준 정의
- 엣지 케이스: 반복 그룹 식별, API 호출 최적화
- 10개 통합 테스트 케이스 구현 완료
- Story 1: 단일 반복 일정 수정 (3 TCs)
- Story 2: 전체 반복 일정 수정 (3 TCs)
- Story 3: 수정 확인 다이얼로그 표시 (4 TCs)
- MSW를 사용한 API 모킹 설정
- 테스트는 Red 상태 (기능 미구현, TDD 예상 동작)
- Stage 4-8에서 유닛 테스트 및 구현 진행 예정
- 2개 유닛 테스트 후보 식별
- findRepeatGroup: 반복 그룹 식별 (7 TCs)
- applyEventUpdate: 단일/전체 수정 적용 (7 TCs)
- 총 14개 유닛 테스트 케이스 예상
- isRepeatingEvent는 Feature 2에서 이미 구현되어 제외
- 2개 함수에 대한 상세 테스트 설계 완료
- findRepeatGroup: 반복 그룹 식별 (7 TCs)
- applyEventUpdate: 단일/전체 수정 적용 (7 TCs)
- 총 14개 유닛 테스트 케이스 설계
- 엣지 케이스, 경계값, 검증 기준 모두 정의
- 2개 유닛 테스트 파일 작성 완료
- repeatGroupUtils.spec.ts: 반복 그룹 식별 (7 TCs)
- eventUpdateUtils.spec.ts: 단일/전체 수정 적용 (7 TCs)
- 총 14개 유닛 테스트 케이스 구현
- Linter 에러 없음
- 함수는 Stage 7에서 TDD로 구현 예정
- 2개 유틸리티 함수 구현 완료 (TDD)
- findRepeatGroup: 반복 그룹 식별 로직
  - 제목, 시간, 반복유형/간격으로 그룹 판별
  - 일반 일정(repeat.type='none')은 그룹 미포함
- applyEventUpdate: 단일/전체 수정 적용 로직
  - mode='single': repeat.type='none'으로 변경
  - mode='all': repeat.type 유지
- 14/14 유닛 테스트 모두 통과 ✓
- Linter 에러 없음
- 사용자 포맷팅 수정 반영
- Stage 8 (Integration TDD)는 추후 구현 예정

Orchestrator Workflow Summary:
✅ Stage 1: Feature Breakdown
✅ Stage 2: Integration Test Design
✅ Stage 3: Integration Test Implementation (Red)
✅ Stage 4: Unit Test Candidate Identification
✅ Stage 5: Unit Test Design
✅ Stage 6: Unit Test Implementation
✅ Stage 7: Unit TDD (14/14 tests passed ✓)
⏸️ Stage 8: Integration TDD (대기)
- Epic: 반복 일정 삭제 관리
- Stories: 3개 (삭제 모드 선택, 단일 삭제, 전체 삭제)
- Flows: 8개
  - Story 1: 삭제 모드 선택 (2 flows)
  - Story 2: 단일 일정 삭제 (3 flows)
  - Story 3: 전체 반복 일정 삭제 (3 flows)
- Validation: Epic/Story/Flow 구조 ✓
- 테스트 목적: 반복 일정 단일/전체 삭제 검증
- 테스트 범위: 다이얼로그, 단일 삭제, 전체 삭제
- 테스트 시나리오: 8개 TC
  - Story 1: 삭제 모드 선택 (2 TCs)
  - Story 2: 단일 일정 삭제 (3 TCs)
  - Story 3: 전체 반복 일정 삭제 (3 TCs)
- Mock 데이터 및 검증 포인트 정의 완료
- Validation: 모든 Flow에 대응하는 TC 존재 ✓
- 8개 통합 테스트 케이스 구현
  - Story 1: 삭제 모드 선택 (2 TCs)
  - Story 2: 단일 일정 삭제 (3 TCs)
  - Story 3: 전체 반복 일정 삭제 (3 TCs)
- MSW를 사용한 API 모킹
- findDeleteButton 헬퍼 함수로 삭제 버튼 탐색
- AAA 패턴 적용 (Arrange-Act-Assert)
- 현재 상태: Red (다이얼로그 미구현)
- Linter 에러: 없음
- Validation: 모든 TC 구현 ✓
- App.tsx: 반복 일정 수정 다이얼로그 추가
  - isEditModeDialogOpen 상태 관리
  - handleEditEvent: 반복 일정 시 다이얼로그 표시
  - handleEditModeSelection: 단일/전체 수정 모드 선택
  - Dialog UI: '해당 일정만 수정하시겠어요?' + 예/아니오 버튼
  - Edit/Delete 버튼 aria-label 한글화 (수정/삭제)

- useEventOperations.ts: editMode 처리 로직 추가
  - saveEvent에 editMode, allEvents 파라미터 추가
  - findRepeatGroup, applyEventUpdate 통합
  - 단일 수정: PUT 1번, repeat.type='none'
  - 전체 수정: PUT N번, repeat.type 유지

- feature4-integration.spec.tsx: 테스트 수정
  - findEditButton 헬퍼 함수 추가
  - 저장 버튼 텍스트 수정 (일정 추가|수정)
  - waitFor 추가 (다이얼로그 닫힘 대기)

- feature5-integration.spec.tsx: aria-label 수정 (Delete event → 삭제)

현재 상태:
✅ 4/10 tests passing
❌ 6/10 tests failing (데이터 검증 관련)
- TC-4-1-1, TC-4-1-3, TC-4-2-1, TC-4-2-3: API 호출 검증 실패
- TC-4-3-2, TC-4-3-3: 다이얼로그 닫힘 검증 실패

다음 단계: 실패 테스트 디버깅 및 수정 필요
- Add dialog to choose between single/all event modification
- Implement editMode state management (single/all)
- Integrate findRepeatGroup and applyEventUpdate in useEventOperations
- Update integration tests with timeout and dialog handling
- Fix linter errors and TypeScript type issues

Status: 6/10 integration tests passing
Remaining issues:
- TC-4-1-1, TC-4-1-3, TC-4-2-1, TC-4-2-3 fail due to time validation errors
- Need to debug saveEvent execution flow and form state management
Current status: 6/10 tests passing
Issue: editEvent not being called or editingEvent state not updating
Next: Need to investigate App.tsx handleEditModeSelection flow
@JunilHwang JunilHwang closed this Oct 31, 2025
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.

2 participants