---
generated_at: 2026-01-28 12:30:00
metrics:
  claims_total: 85
  claims_with_evidence: 82
  claims_without_evidence: 3
confidence_derived: 0.96
---

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

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：82 / 85、根拠なし：3
- 優先レビュー（高）
  1. **C-85 (UT-CRT-085)**: additionalフィールドのattributes取得ロジックの詳細確認
  2. **C-53 (UT-CRT-053)**: 大文字小文字変換の挙動確認（toLowerCase使用）
  3. **C-74 (UT-CRT-074)**: 空カート判定ロジックの詳細確認

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

- E-01: `lib/screens/cart_screen/bloc/cart_screen_bloc.dart` - CartScreenBlocクラスとmapEventToStateメソッド
- E-02: `lib/screens/cart_screen/bloc/cart_screen_event.dart` - 全イベントクラス定義
- E-03: `lib/screens/cart_screen/bloc/cart_screen_state.dart` - 全状態クラス定義とCartStatus enum
- E-04: `lib/screens/cart_screen/bloc/cart_screen_repository.dart` - CartScreenRepositoryインターフェースと実装
- E-05: `lib/screens/cart_screen/cart_model/cart_data_model.dart` - CartModel, Items, FormattedPrice等のデータモデル
- E-06: `lib/screens/cart_screen/cart_model/add_to_cart_model.dart` - AddToCartModelデータモデル
- E-07: `lib/screens/cart_screen/cart_model/apply_coupon.dart` - ApplyCouponデータモデル
- E-08: `lib/screens/cart_screen/utils/check_downlodable.dart` - checkVirtualDownloadable, checkDownloadable関数
- E-09: `lib/screens/cart_screen/widget/cart_item.dart` - CartListItemウィジェットと_itemChange, _onPressRemoveメソッド
- E-10: `lib/screens/cart_screen/widget/apply_coupon_view.dart` - ApplyCouponViewウィジェットとバリデーションロジック
- E-11: `lib/screens/cart_screen/widget/button_view.dart` - ButtonViewウィジェットと_onPressAllRemoveメソッド
- E-12: `lib/screens/cart_screen/widget/price_details_view.dart` - PriceDetailViewウィジェットと税金表示ロジック
- E-13: `lib/screens/cart_screen/widget/proceed_view.dart` - ProceedViewウィジェットとチェックアウト遷移ロジック
- E-14: `lib/screens/cart_screen/widget/guest_checkout_view.dart` - GuestCheckoutViewウィジェット
- E-15: `lib/screens/cart_screen/cart_screen.dart` - CartScreenウィジェットとbuildContainerメソッド
- E-16: `lib/screens/cart_screen/widget/cart_loader_screen.dart` - CartLoaderViewウィジェット

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

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | FetchCartDataEventでカートデータが正常に取得される | E-01 (L22-28) | ○ |
| C-02 | FetchCartDataEventでエラー時にfail状態が発行される | E-01 (L26-28) | ○ |
| C-03 | UpdateCartEventでカート更新が正常に実行される | E-01 (L29-37) | ○ |
| C-04 | UpdateCartEventでエラー時にfail状態が発行される | E-01 (L35-37) | ○ |
| C-05 | RemoveCartItemEventでアイテム削除が正常に実行される | E-01 (L38-47) | ○ |
| C-06 | RemoveCartItemEventでエラー時にfail状態が発行される | E-01 (L45-47) | ○ |
| C-07 | RemoveAllCartItemEventで全アイテム削除が正常に実行される | E-01 (L48-56) | ○ |
| C-08 | RemoveAllCartItemEventでエラー時にfail状態が発行される | E-01 (L54-56) | ○ |
| C-09 | AddCouponCartEventでクーポン適用が成功する | E-01 (L57-69) | ○ |
| C-10 | AddCouponCartEventで無効なクーポンの場合fail状態が発行される | E-01 (L64-66) | ○ |
| C-11 | AddCouponCartEventでエラー時にfail状態が発行される | E-01 (L67-69) | ○ |
| C-12 | RemoveCouponCartEventでクーポン削除が成功する | E-01 (L70-82) | ○ |
| C-13 | RemoveCouponCartEventでエラー時にfail状態が発行される | E-01 (L80-82) | ○ |
| C-14 | MoveToCartEventでウィッシュリストへの移動が成功する | E-01 (L83-99) | ○ |
| C-15 | MoveToCartEventで失敗時にfail状態が発行される | E-01 (L93-98) | ○ |
| C-16 | カートデータが正常に取得される（Repository） | E-04 (L33-42) | ○ |
| C-17 | API呼び出し時のエラーでnullが返却される（getCartData） | E-04 (L37-41) | ○ |
| C-18 | カートアイテム更新が正常に実行される | E-04 (L44-55) | ○ |
| C-19 | API呼び出し時のエラーでnullが返却される（updateItemToCart） | E-04 (L50-54) | ○ |
| C-20 | カートからアイテム削除が正常に実行される | E-04 (L57-70) | ○ |
| C-21 | API呼び出し時のエラーでnullが返却される（removeFromCart） | E-04 (L65-69) | ○ |
| C-22 | クーポン適用が正常に実行される | E-04 (L72-82) | ○ |
| C-23 | API呼び出し時のエラーで例外がスローされる（addCoupon） | E-04 (L77-80, L81) | ○ |
| C-24 | クーポン削除が正常に実行される | E-04 (L84-94) | ○ |
| C-25 | API呼び出し時のエラーでnullが返却される（removeCoupon） | E-04 (L89-93) | ○ |
| C-26 | ウィッシュリストへの移動が正常に実行される | E-04 (L96-106) | ○ |
| C-27 | API呼び出し時のエラーでnullが返却される（moveToWishlist） | E-04 (L101-105) | ○ |
| C-28 | カート全削除が正常に実行される | E-04 (L108-119) | ○ |
| C-29 | API呼び出し時のエラーでnullが返却される（removeAllCartItem） | E-04 (L114-118) | ○ |
| C-30 | JSONからCartModelが正しく生成される | E-05 (L49-51) | ○ |
| C-31 | 空のJSONからCartModelが生成される | E-05 (L34-47) | ○ |
| C-32 | CartModelからJSONが正しく生成される | E-05 (L52-53) | ○ |
| C-33 | JSONからItemsが正しく生成される | E-05 (L110-112) | ○ |
| C-34 | quantityが0の場合Itemsが正しく生成される | E-05 (L93, L110) | ○ |
| C-35 | JSONからFormattedPriceが正しく生成される | E-05 (L184-186) | ○ |
| C-36 | JSONからAppliedTaxRateが正しく生成される | E-05 (L68-70) | ○ |
| C-37 | JSONからShippingAddressが正しく生成される | E-05 (L136-138) | ○ |
| C-38 | JSONからPaymentが正しく生成される | E-05 (L81-83) | ○ |
| C-39 | JSONからAddToCartModelが正しく生成される | E-06 (L19-21) | ○ |
| C-40 | cartがnullのJSONからAddToCartModelが生成される | E-06 (L17-18) | ○ |
| C-41 | JSONからApplyCouponが正しく生成される | E-07 (L20-21) | ○ |
| C-42 | success=falseの場合正しく処理される | E-07 (L15-19) | ○ |
| C-43 | 全アイテムがdownloadableの場合trueが返却される | E-08 (L14-25) | ○ |
| C-44 | 全アイテムがvirtualの場合trueが返却される | E-08 (L18-19) | ○ |
| C-45 | 全アイテムがbookingの場合trueが返却される | E-08 (L20) | ○ |
| C-46 | 物理商品が含まれる場合falseが返却される | E-08 (L16-21) | ○ |
| C-47 | 空のリストの場合trueが返却される（checkVirtualDownloadable） | E-08 (L15, L24) | ○ |
| C-48 | nullの場合trueが返却される（checkVirtualDownloadable） | E-08 (L15) | ○ |
| C-49 | downloadableアイテムが含まれる場合trueが返却される | E-08 (L27-35) | ○ |
| C-50 | downloadableアイテムが含まれない場合falseが返却される | E-08 (L34) | ○ |
| C-51 | 空のリストの場合falseが返却される（checkDownloadable） | E-08 (L28, L34) | ○ |
| C-52 | nullの場合falseが返却される（checkDownloadable） | E-08 (L28) | ○ |
| C-53 | 大文字小文字混在でも正しく判定される | E-08 (L29-30) | ○ |
| C-54 | 選択アイテムが正しく追加される | E-09 (L353-361) | ○ |
| C-55 | 選択アイテムが正しく削除される | E-09 (L358-360) | ○ |
| C-56 | 同一IDのアイテムが重複しない | E-09 (L355) | ○ |
| C-57 | FetchCartDataState.successが正しく生成される | E-03 (L75-76) | ○ |
| C-58 | FetchCartDataState.failが正しく生成される | E-03 (L78) | ○ |
| C-59 | UpdateCartState.successが正しく生成される | E-03 (L104-105) | ○ |
| C-60 | RemoveCartItemState.successが正しく生成される | E-03 (L54) | ○ |
| C-61 | AddCouponState.successが正しく生成される | E-03 (L27-28) | ○ |
| C-62 | MoveToCartState.successが正しく生成される | E-03 (L89-92) | ○ |
| C-63 | 有効なクーポンコードでバリデーション成功する | E-10 (L71-79) | ○ |
| C-64 | 空のクーポンコードでバリデーションエラーになる | E-10 (L72-77) | ○ |
| C-65 | 空白のみのクーポンコードでバリデーションエラーになる | E-10 (L72) | ○ |
| C-66 | ログイン済みユーザーがチェックアウト画面に遷移する | E-13 (L75-85) | ○ |
| C-67 | 数量変更時に警告メッセージが表示される | E-13 (L70-74) | ○ |
| C-68 | 未ログインユーザーにゲストチェックアウトダイアログが表示される | E-13 (L86-95) | ○ |
| C-69 | downloadable商品がない場合ゲストチェックアウトボタンが表示される | E-14 (L99-136) | ○ |
| C-70 | downloadable商品がある場合ゲストチェックアウトボタンが非表示になる | E-14 (L99, L136) | ○ |
| C-71 | JSONからSelectedShippingRateが正しく生成される | E-05 (L150-153) | ○ |
| C-72 | カートデータ取得イベントが発行される | E-15 (L37-39) | ○ |
| C-73 | ShowLoaderCartStateでローダーが表示される | E-15 (L128-130) | ○ |
| C-74 | カートが空の場合EmptyDataViewが表示される | E-15 (L211-219) | ○ |
| C-75 | カートにアイテムがある場合リストが表示される | E-15 (L220-221) | ○ |
| C-76 | 全削除確認ダイアログが表示される | E-11 (L157-188) | ○ |
| C-77 | 確認後RemoveAllCartItemEventが発行される | E-11 (L178-180) | ○ |
| C-78 | アイテム削除確認ダイアログが表示される | E-09 (L363-398) | ○ |
| C-79 | 確認後RemoveCartItemEventが発行される | E-09 (L386-390) | ○ |
| C-80 | ログイン済みユーザーがウィッシュリスト移動できる | E-09 (L266-271) | ○ |
| C-81 | 未ログインユーザーに警告が表示される | E-09 (L272-276) | ○ |
| C-82 | 税金が0より大きい場合ExpansionTileが表示される | E-12 (L74-143) | ○ |
| C-83 | 税金が0以下の場合通常の税表示になる | E-12 (L144-163) | ○ |
| C-84 | itemsがnullの場合安全にアクセスできる | E-05 (L27), E-15 (L220) | ○ |
| C-85 | additionalからattributesが正しく取得できる | E-09 (L132-152) | △ |

## 4) 不足情報（Unknown / Missing）

- **C-85**: `getAttributesValueFromAdditional`関数の定義がcart_screenモジュール外にあるため、戻り値の型と挙動の詳細確認が必要
  - 候補：`lib/utils/` / 共通ユーティリティ / ヘルパー関数

## 5) リスクフラグ（レビュー観点）

- **0 (低リスク)**: データモデル変換テスト（C-30〜C-42）- JsonSerializableによる自動生成のため安定
- **0 (低リスク)**: 状態生成テスト（C-57〜C-62）- 単純なファクトリコンストラクタ
- **1 (中リスク)**: API連携テスト（C-16〜C-29）- 外部依存があるためモック化が必要
- **1 (中リスク)**: ユーティリティ関数テスト（C-43〜C-53）- toLowerCase()による大文字小文字処理の境界条件確認推奨
- **2 (高リスク)**: UI連携テスト（C-66〜C-70, C-76〜C-81）- Widget Testingフレームワークの適切な設定が必要

## 6) レビュアーチェックリスト（最小）

- [ ] クーポン適用ロジック（C-09〜C-13）のビジネス要件との整合性確認
- [ ] ゲストチェックアウト制限（C-69〜C-70）のdownloadable商品判定ロジック確認
- [ ] カート更新警告（C-67）のUX観点での妥当性確認
- [ ] 全削除機能（C-07〜C-08, C-76〜C-77）の誤操作防止策確認
- [ ] ウィッシュリスト移動時のログイン要求（C-80〜C-81）の仕様確認
- [ ] `getAttributesValueFromAdditional`関数の実装確認（C-85）
