feat(app): add manual entry and sharing flows

This commit is contained in:
JiWoong Sul
2025-11-19 16:36:39 +09:00
parent 5ade584370
commit 947fe59486
110 changed files with 5937 additions and 3781 deletions

View File

@@ -0,0 +1,43 @@
# Flutter Test Failures 2025-XX-XX
## TL;DR
- **해결 완료**: `test/integration/naver_api_integration_test.dart`의 “NaverMapParser - 동시성 및 리소스 관리 - 리소스 정리 확인”이 dispose 이후에도 성공을 반환하던 문제가 수정되었습니다.
- 수정 내용: `NaverMapParser``dispose()` 호출 뒤 `_isDisposed` 플래그를 설정하고, 이후 `parseRestaurantFromUrl`이 호출되면 `NaverMapParseException('이미 dispose된 파서입니다')`를 던지도록 변경했습니다 (`lib/data/datasources/remote/naver_map_parser.dart`).
- 단위 재현 테스트:
```bash
flutter test test/integration/naver_api_integration_test.dart \
--plain-name '리소스 정리 확인'
```
- 위 명령은 정상 통과했으며, 전체 스위트는 별도로 재실행해야 합니다.
---
## Failing Spec
| 항목 | 내용 |
| --- | --- |
| 파일 | `test/integration/naver_api_integration_test.dart` |
| 라인 | `342-355` (테스트 이름: `NaverMapParser - 동시성 및 리소스 관리 리소스 정리 확인`) |
| 기대 | `expect(() => parser.parseRestaurantFromUrl(...), throwsAnything)` |
| 실제 | `parseRestaurantFromUrl`가 `Restaurant` 인스턴스를 반환하여 `Future`가 성공적으로 완료됨 |
| 로그 | `Expected: throws anything, Actual: ... emitted <Instance of 'Restaurant'>` |
### 의심 원인
1. **샘플/시드 데이터 추가** 최근 추가된 `ManualRestaurantSamples`/`SampleDataInitializer`가 지도 파서의 동작 경로를 바꾸지는 않지만, 테스트 스텁이 더 이상 에러를 내지 않고 정상 데이터를 반환하도록 수정되었을 가능성.
2. **네이버 파서 구현 변경** `_parseWithLocalSearch` 또는 GraphQL fallback 로직이 보강되면서, 과거에는 에러가 발생하던 케이스도 이제는 성공으로 처리되는 것으로 추정.
### 해야 할 일
1. **전체 스위트 재실행**
- 이번 수정은 특정 테스트만 확인했으므로, `flutter test` 전체를 다시 돌려 다른 회귀가 없는지 확인합니다.
2. **Mock/Stubs 정리 (기존 TODO 유지)**
- `flutter analyze`가 여전히 `test/mocks/mock_naver_api_client.dart`의 override 경고를 보고하므로, 모킹 계층을 최신 구현과 맞춰 조정해야 합니다.
3. **회귀 방지**
- dispose 상태 확인 로직을 다른 리소스 보유 클래스에도 적용 가능한지 검토하고, 유사 패턴의 테스트를 추가하는 것이 좋습니다.
---
## 참고 사항
- `flutter analyze` 또한 160개의 info/warning을 내고 있으며, `test/mocks/mock_naver_api_client.dart`의 `override_on_non_overriding_member` 경고가 존재합니다. 위 이슈를 고치는 과정에서 함께 손볼 것을 권장합니다.
- 새로 추가된 샘플 데이터가 방문 이력까지 시드하므로 테스트 환경에 영향을 줄 수 있습니다. 필요 시 테스트에서 Hive 박스를 mock하거나 초기화를 제어하세요.