-
Notifications
You must be signed in to change notification settings - Fork 52
[2팀 정나리] Chapter 1-2. AI와 테스트를 활용한 안정적인 기능 개발 #12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
new PR : #62