---
generated_at: 2026-01-28 15:30:00
metrics:
  claims_total: 55
  claims_with_evidence: 55
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：add_review単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：55 / 55、根拠なし：0
- 優先レビュー（高）
  1. **UT-ARV-011〜014, 027-028, 039-041**：Bloc/Repositoryのテストケース（ビジネスロジックの中核）
  2. **UT-ARV-001〜003**：データモデルのシリアライズ/デシリアライズ
  3. **UT-ARV-050〜053**：画像選択機能のテスト（外部依存あり）

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `lib/screens/add_review/view/add_review.dart` - AddReview Widget実装
- E-02: `lib/screens/add_review/bloc/add_review_bloc.dart` - AddReviewBloc実装
- E-03: `lib/screens/add_review/bloc/add_review_event.dart` - イベントクラス定義
- E-04: `lib/screens/add_review/bloc/add_review_state.dart` - 状態クラス定義
- E-05: `lib/screens/add_review/bloc/add_review_repository.dart` - リポジトリ実装
- E-06: `lib/screens/add_review/data_model/add_review_model.dart` - データモデル定義
- E-07: `lib/screens/add_review/view/widget/add_image_view.dart` - 画像追加Widget実装
- E-08: `lib/screens/add_review/utils/index.dart` - モジュールエクスポート定義
- E-09: `lib/data_model/graphql_base_model.dart` - BaseModel親クラス定義

## 3) Claims と根拠の対応（レビューの主戦場）

### データモデル関連（UT-ARV-001〜010）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | AddReviewModel.fromJsonでJSON→オブジェクト変換 | E-06 L26-27 | ○ |
| C-02 | AddReviewModel.fromJsonでreview=null許容 | E-06 L23 (Review? review) | ○ |
| C-03 | AddReviewModel.toJsonでオブジェクト→JSON変換 | E-06 L29-30 | ○ |
| C-04 | Review.fromJsonでJSON→オブジェクト変換 | E-06 L51 | ○ |
| C-05 | Review.fromJsonで空JSON処理 | E-06 L35 (String? id) | ○ |
| C-06 | Review.toJsonでオブジェクト→JSON変換 | E-06 L53 | ○ |
| C-07 | Product.fromJsonでJSON→オブジェクト変換 | E-06 L76-77 | ○ |
| C-08 | Product.fromJsonでproductFlatsリスト処理 | E-06 L65 | ○ |
| C-09 | ProductFlats.fromJsonでJSON→オブジェクト変換 | E-06 L139-140 | ○ |
| C-10 | ProductFlats.fromJsonでprice=null許容 | E-06 L93 (var price) | ○ |

### Bloc関連（UT-ARV-011〜021）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-11 | AddReviewFetchEventでレビュー追加成功 | E-02 L22-32 | ○ |
| C-12 | AddReviewFetchEventでエラー時fail状態発行 | E-02 L33-36 | ○ |
| C-13 | ImagePickerEventで画像追加 | E-02 L37-44 | ○ |
| C-14 | ImagePickerEventで画像削除 | E-02 L41-43 | ○ |
| C-15 | ImagePickerEventでnull画像処理 | E-02 L38-40 | ○ |
| C-16 | AddReviewFetchState.success生成 | E-04 L27-28 | ○ |
| C-17 | AddReviewFetchState.fail生成 | E-04 L30 | ○ |
| C-18 | AddReviewFetchState.props返却 | E-04 L32-33 | ○ |
| C-19 | AddReviewFetchState.propsでnullモデル処理 | E-04 L33 | ○ |
| C-20 | ImagePickerState初期化 | E-04 L36-38 | ○ |
| C-21 | AddReviewInitialState.props返却 | E-04 L18 | ○ |

### イベント関連（UT-ARV-022〜026）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-22 | AddReviewFetchEvent全パラメータ初期化 | E-03 L16-29 | ○ |
| C-23 | AddReviewFetchEventで空attachments処理 | E-03 L22 (required attachments) | ○ |
| C-24 | ImagePickerEvent画像追加用生成 | E-03 L32-36 | ○ |
| C-25 | ImagePickerEvent画像削除用生成 | E-03 L34-35 | ○ |
| C-26 | ImagePickerEvent.props返却 | E-03 L37 | ○ |

### リポジトリ関連（UT-ARV-027〜030）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-27 | callAddReviewApiでAPI呼び出し | E-05 L24-34 | ○ |
| C-28 | callAddReviewApiでエラー処理 | E-05 L30-33 | ○ |
| C-29 | callAddReviewApiでrating=0処理 | E-05 L24 (int rating) | ○ |
| C-30 | callAddReviewApiで空attachments処理 | E-05 L25 | ○ |

### Widget関連（UT-ARV-031〜046）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-31 | AddReview.initStateでBloc取得 | E-01 L42-44 | ○ |
| C-32 | AddReview.buildでScaffold構築 | E-01 L48-58 | ○ |
| C-33 | buildUIでAddReviewInitialState処理 | E-01 L98-100 | ○ |
| C-34 | buildUIでAddReviewFetchState.success処理 | E-01 L88-92 | ○ |
| C-35 | buildUIでAddReviewFetchState.fail処理 | E-01 L93-95 | ○ |
| C-36 | buildUIでImagePickerState処理 | E-01 L101-112 | ○ |
| C-37 | getMultipartFileで画像変換 | E-01 L116-124 | ○ |
| C-38 | getMultipartFileでnullパス処理 | E-01 L119 | ○ |
| C-39 | _onPressSubmitButtonでレビュー送信 | E-01 L272-320 | ○ |
| C-40 | _onPressSubmitButtonでフォームバリデーション | E-01 L273 | ○ |
| C-41 | _onPressSubmitButtonでrating=0警告 | E-01 L321-327 | ○ |
| C-42 | タイトルバリデーション正常系 | E-01 L186-192 | ○ |
| C-43 | タイトルバリデーション異常系 | E-01 L187-189 | ○ |
| C-44 | コメントバリデーション正常系 | E-01 L223-229 | ○ |
| C-45 | コメントバリデーション異常系 | E-01 L224-226 | ○ |
| C-46 | RatingBarで評価更新 | E-01 L173-175 | ○ |

### AddImageView関連（UT-ARV-047〜055）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-47 | AddImageView.buildで画像リスト表示 | E-07 L43-67 | ○ |
| C-48 | AddImageView.buildで空リスト処理 | E-07 L49 | ○ |
| C-49 | _onPressAddImageでダイアログ表示 | E-07 L90-133 | ○ |
| C-50 | _openGalleryで画像選択 | E-07 L135-149 | ○ |
| C-51 | _openGalleryでキャンセル処理 | E-07 L140 | ○ |
| C-52 | _openCameraで画像撮影 | E-07 L151-165 | ○ |
| C-53 | _openCameraでキャンセル処理 | E-07 L156 | ○ |
| C-54 | 画像削除ボタン機能 | E-07 L56-62 | ○ |
| C-55 | AddReviewModelのBaseModel継承 | E-06 L20, E-09 L18-33 | ○ |

## 4) 不足情報（Unknown / Missing）
- 該当なし - 全てのテストケースに対して、ソースコード上に明確な根拠が存在します。

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全テストケースがソースコードに基づいており、実装との乖離リスクは低い

### 注意点
1. **外部依存**: `ImagePicker`パッケージを使用しているため、モック化が必要（UT-ARV-050〜053）
2. **非同期処理**: `getMultipartFile`メソッドはasyncのため、テスト時に適切なawaitが必要
3. **API依存**: `AddReviewRepositoryImp`は`ApiClient`に依存しているため、統合テストとの棲み分けが必要

## 6) レビュアーチェックリスト（最小）
- [ ] Blocのイベントハンドリング（UT-ARV-011〜015）が実際の画面遷移と整合しているか
- [ ] バリデーションエラーメッセージがUI要件と一致しているか
- [ ] ImagePickerのモック方法が他のテストと統一されているか
- [ ] API呼び出しのエラーケース（タイムアウト、ネットワークエラー）が網羅されているか
- [ ] rating=0とrating=1の境界値が適切に検証されているか
