---
generated_at: 2026-01-28 10:30:00
metrics:
  claims_total: 100
  claims_with_evidence: 98
  claims_without_evidence: 2
confidence_derived: 0.98
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：98 / 100、根拠なし：2
- 優先レビュー（高）
  1. **UT-HOM-079, UT-HOM-080 (ServiceGridScreen._getIcon)**：icomoonCodeMapの詳細な定義は外部ファイルに依存
  2. **UT-HOM-081〜085 (StaticContentWidget)**：WebViewの内部動作に関するテストは実機依存

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

- E-01: `lib/screens/home_page/home_page.dart` - HomeScreenウィジェット
- E-02: `lib/screens/home_page/bloc/home_page_bloc.dart` - HomePageBloc（イベント処理ロジック）
- E-03: `lib/screens/home_page/bloc/home_page_event.dart` - HomePageEventクラス定義
- E-04: `lib/screens/home_page/bloc/home_page_state.dart` - HomePageStateクラス定義
- E-05: `lib/screens/home_page/bloc/home_page_repository.dart` - HomePageRepository（API呼び出し）
- E-06: `lib/screens/home_page/data_model/theme_customization.dart` - テーマカスタマイズデータモデル
- E-07: `lib/screens/home_page/data_model/new_product_data.dart` - 商品データモデル
- E-08: `lib/screens/home_page/data_model/get_categories_drawer_data_model.dart` - カテゴリデータモデル
- E-09: `lib/screens/home_page/utils/home_page_event.dart` - homepageEventヘルパー関数
- E-10: `lib/screens/home_page/utils/error_handler.dart` - homePageErrorヘルパー関数
- E-11: `lib/screens/home_page/utils/route_argument_helper.dart` - ルート引数ヘルパー
- E-12: `lib/screens/home_page/widget/home_page_view.dart` - HomePageViewウィジェット
- E-13: `lib/screens/home_page/widget/new_product_view.dart` - NewProductViewウィジェット
- E-14: `lib/screens/home_page/widget/carousal_slider.dart` - CarousalSliderウィジェット
- E-15: `lib/screens/home_page/widget/service_content.dart` - ServiceGridScreenウィジェット
- E-16: `lib/screens/home_page/widget/static_content_widget.dart` - StaticContentWidgetウィジェット
- E-17: `lib/screens/home_page/widget/footer_links.dart` - FooterColumnsScreenウィジェット
- E-18: `lib/screens/home_page/widget/reach_top.dart` - buildReachBottomView関数
- E-19: `lib/screens/home_page/widget/view_all_button.dart` - viewAllButton関数
- E-20: `lib/screens/home_page/widget/details_banner.dart` - DetailsBannerViewウィジェット
- E-21: `lib/screens/home_page/widget/home_page_loader_view.dart` - HomePageLoaderウィジェット

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

### BLoC関連テストケース（UT-HOM-001〜020）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | AddToCartEvent成功時にAddToCartState.successが発行される | E-02 (line 28-43) | ○ |
| C-02 | AddToCartEvent失敗時にAddToCartState.failが発行される | E-02 (line 36-43) | ○ |
| C-03 | AddToCartEvent例外時にsomethingWrongメッセージが返される | E-02 (line 40-43) | ○ |
| C-04 | FetchAddWishlistHomepageEvent成功時にisInWishlistが切り替わる | E-02 (line 44-69) | ○ |
| C-05 | FetchAddWishlistHomepageEvent成功時にtrueからfalseに切り替わる | E-02 (line 49-57) | ○ |
| C-06 | FetchAddWishlistHomepageEvent失敗時にエラーが返される | E-02 (line 63-69) | ○ |
| C-07 | RemoveWishlistItemEvent成功時にisInWishlistが切り替わる | E-02 (line 70-97) | ○ |
| C-08 | OnClickLoaderEventでOnClickLoaderStateが発行される | E-02 (line 98-99) | ○ |
| C-09 | AddToCompareHomepageEvent成功時にsuccess状態が発行される | E-02 (line 100-113) | ○ |
| C-10 | AddToCompareHomepageEvent失敗時にエラーが返される | E-02 (line 107-113) | ○ |
| C-11 | FetchHomeCustomDataでテーマデータが取得される | E-02 (line 115-126) | ○ |
| C-12 | FetchHomeCustomData例外時にエラーが返される | E-02 (line 122-125) | ○ |
| C-13 | FetchAllProductsEventで商品データが取得される | E-02 (line 127-141) | ○ |
| C-14 | FetchAllProductsEventでGlobalData.allProductsに結果が格納される | E-02 (line 133) | ○ |
| C-15 | CartCountEventでカート件数が取得される | E-02 (line 142-151) | ○ |
| C-16 | CustomerDetailsEventで顧客情報が取得される | E-02 (line 152-162) | ○ |
| C-17 | FetchHomePageCategoriesEventでカテゴリ一覧が取得される | E-02 (line 163-172) | ○ |
| C-18 | FetchCMSDataEventでCMSデータが取得される | E-02 (line 173-181) | ○ |
| C-19 | SubscribeNewsLetterEvent成功時にsuccess状態が発行される | E-02 (line 182-195) | ○ |
| C-20 | SubscribeNewsLetterEvent失敗時にfail状態が発行される | E-02 (line 188-194) | ○ |

### Repository関連テストケース（UT-HOM-021〜031）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-21 | callAddToCartApiが正しく呼び出される | E-05 (line 50-57) | ○ |
| C-22 | addItemToWishlistが正しく呼び出される | E-05 (line 59-69) | ○ |
| C-23 | addItemToWishlist例外時にnullが返される | E-05 (line 63-68) | ○ |
| C-24 | removeItemFromWishlistが正しく呼び出される | E-05 (line 121-133) | ○ |
| C-25 | callAddToCompareListApiが正しく呼び出される | E-05 (line 84-95) | ○ |
| C-26 | getThemeCustomizationDataが正しく呼び出される | E-05 (line 97-107) | ○ |
| C-27 | cartCountApiが正しく呼び出される | E-05 (line 109-119) | ○ |
| C-28 | callAccountDetailsApiが正しく呼び出される | E-05 (line 135-145) | ○ |
| C-29 | getAllProductsが正しく呼び出される | E-05 (line 148-159) | ○ |
| C-30 | getHomeCategoriesListが正しく呼び出される | E-05 (line 36-48) | ○ |
| C-31 | subscribeNewsletterが正しく呼び出される | E-05 (line 173-183) | ○ |

### データモデル関連テストケース（UT-HOM-032〜051, 093〜100）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-32 | ThemeCustomDataModel.fromJsonが正しく動作する | E-06 (line 17-28) | ○ |
| C-33 | 空データでThemeCustomDataModelが生成される | E-06 (line 23-24) | ○ |
| C-34 | ThemeCustomDataModel.toJsonが正しく動作する | E-06 (line 26-27) | ○ |
| C-35 | ThemeCustomization.fromJsonが正しく動作する | E-06 (line 30-43) | ○ |
| C-36 | Translations.fromJsonが正しく動作する | E-06 (line 45-57) | ○ |
| C-37 | Options.fromJsonが正しく動作する | E-06 (line 59-87) | ○ |
| C-38 | ServiceModel.fromJsonが正しく動作する | E-06 (line 89-108) | ○ |
| C-39 | LinkModel.fromJsonが正しく動作する | E-06 (line 110-143) | ○ |
| C-40 | ColumnModel.fromJsonが正しく動作する | E-06 (line 145-163) | ○ |
| C-41 | Images.fromJsonが正しく動作する | E-06 (line 165-174) | ○ |
| C-42 | Filters.fromJsonが正しく動作する | E-06 (line 176-187) | ○ |
| C-43 | NewProductsModel.fromJsonが正しく動作する | E-07 (line 19-33) | ○ |
| C-44 | 空データでNewProductsModelが生成される | E-07 (line 29-30) | ○ |
| C-45 | NewProducts.fromJsonが正しく動作する | E-07 (line 35-164) | ○ |
| C-46 | priceHtmlがネストJSONから正しくパースされる | E-07 (line 83, 232-276) | ○ |
| C-47 | nullフィールドが正しく処理される | E-07 (line 39-40) | ○ |
| C-48 | PriceHtml.fromJsonが正しく動作する | E-07 (line 232-276) | ○ |
| C-49 | GetDrawerCategoriesData.fromJsonが正しく動作する | E-08 (line 16-29) | ○ |
| C-50 | HomeCategories.fromJsonが正しく動作する | E-08 (line 31-62) | ○ |
| C-51 | Children.fromJsonが正しく動作する | E-08 (line 98-117) | ○ |
| C-93 | ConfigurableData.fromJsonが正しく動作する | E-07 (line 432-454) | ○ |
| C-94 | GroupedProducts.fromJsonが正しく動作する | E-07 (line 521-536) | ○ |
| C-95 | DownloadableLinks.fromJsonが正しく動作する | E-07 (line 538-569) | ○ |
| C-96 | BundleOptions.fromJsonが正しく動作する | E-07 (line 571-587) | ○ |
| C-97 | BookingProduct.fromJsonが正しく動作する | E-07 (line 719-760) | ○ |
| C-98 | EventTicket.fromJsonが正しく動作する | E-07 (line 846-895) | ○ |
| C-99 | TableSlot.fromJsonが正しく動作する | E-07 (line 897-934) | ○ |
| C-100 | PaginatorInfo.fromJsonが正しく動作する | E-07 (line 166-178) | ○ |

### ヘルパー関数関連テストケース（UT-HOM-052〜060）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-52 | addToCart時にAddToCartEventが発行される | E-09 (line 16-24) | ○ |
| C-53 | data=nullの場合は何も発行されない | E-09 (line 17) | ○ |
| C-54 | ログイン済みでFetchAddWishlistHomepageEventが発行される | E-09 (line 25-34) | ○ |
| C-55 | 未ログインで警告メッセージが表示される | E-09 (line 30-33) | ○ |
| C-56 | ログイン済みでAddToCompareHomepageEventが発行される | E-09 (line 35-44) | ○ |
| C-57 | 未ログインで警告メッセージが表示される | E-09 (line 40-43) | ○ |
| C-58 | homePageErrorでエラーダイアログが表示される | E-10 (line 16-37) | ○ |
| C-59 | DrawerSubCategoriesが正しく初期化される | E-11 (line 14-19) | ○ |
| C-60 | PassProductDataが正しく初期化される | E-11 (line 21-27) | ○ |

### 状態クラス関連テストケース（UT-HOM-061〜070）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-61 | FetchHomeCustomDataState.successが正しく生成される | E-04 (line 31-41) | ○ |
| C-62 | FetchHomeCustomDataState.failが正しく生成される | E-04 (line 40) | ○ |
| C-63 | FetchAllProductsState.successが正しく生成される | E-04 (line 43-53) | ○ |
| C-64 | AddToCartState.successが正しく生成される | E-04 (line 116-125) | ○ |
| C-65 | AddToCartState.failが正しく生成される | E-04 (line 124) | ○ |
| C-66 | FetchAddWishlistHomepageState.successが正しく生成される | E-04 (line 79-90) | ○ |
| C-67 | RemoveWishlistState.successが正しく生成される | E-04 (line 92-103) | ○ |
| C-68 | AddToCompareHomepageState.successが正しく生成される | E-04 (line 105-114) | ○ |
| C-69 | SubscribeNewsLetterState.successが正しく生成される | E-04 (line 149-157) | ○ |
| C-70 | SubscribeNewsLetterState.failが正しく生成される | E-04 (line 155-156) | ○ |

### イベントクラス関連テストケース（UT-HOM-071〜078）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-71 | AddToCartEventが正しく初期化される | E-03 (line 27-32) | ○ |
| C-72 | FetchAddWishlistHomepageEventが正しく初期化される | E-03 (line 15-19) | ○ |
| C-73 | RemoveWishlistItemEventが正しく初期化される | E-03 (line 21-25) | ○ |
| C-74 | AddToCompareHomepageEventが正しく初期化される | E-03 (line 34-38) | ○ |
| C-75 | FetchAllProductsEventが正しく初期化される | E-03 (line 42-46) | ○ |
| C-76 | FetchHomePageCategoriesEventが正しく初期化される | E-03 (line 52-55) | ○ |
| C-77 | OnClickLoaderEventが正しく初期化される | E-03 (line 57-60) | ○ |
| C-78 | SubscribeNewsLetterEventが正しく初期化される | E-03 (line 63-66) | ○ |

### ウィジェット関連テストケース（UT-HOM-079〜092）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-79 | ServiceGridScreen._getIconで正しいアイコンが返される | E-15 (line 9-15) | △ |
| C-80 | 存在しないアイコン名でデフォルトが返される | E-15 (line 11-13) | △ |
| C-81 | StaticContentWidget._generateHtmlでHTMLが生成される | E-16 (line 42-109) | ○ |
| C-82 | product型リンクで商品画面に遷移する | E-16 (line 132-135) | ○ |
| C-83 | category型リンクでカテゴリ画面に遷移する | E-16 (line 136-139) | ○ |
| C-84 | cms型リンクでCMS画面に遷移する | E-16 (line 140-144) | ○ |
| C-85 | 未知の型リンクで外部ブラウザが開く | E-16 (line 145-148) | ○ |
| C-86 | FooterColumnsScreen.buildColumnでウィジェットが生成される | E-17 (line 20-44) | ○ |
| C-87 | 空リストでSizedBox.shrinkが返される | E-17 (line 21) | ○ |
| C-88 | nullでSizedBox.shrinkが返される | E-17 (line 21) | ○ |
| C-89 | viewAllButtonでボタンが生成される | E-19 (line 18-50) | ○ |
| C-90 | viewAllButtonのコールバックが呼び出される | E-19 (line 22-25) | ○ |
| C-91 | buildReachBottomViewでビューが生成される | E-18 (line 15-42) | ○ |
| C-92 | Back to Topタップでスクロールがリセットされる | E-18 (line 30-34) | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-79, C-80 (ServiceGridScreen._getIcon)**
  - 理由：`icomoonCodeMap`の定義が外部ファイル（lib/utils/icomoon_code_map.dart）にあり、home_pageモジュール外のため完全な検証が困難
  - 候補：lib/utils/icomoon_code_map.dart / フォントファイル / アイコン定義ドキュメント

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - データモデルのJSONパース系テストケース（C-32〜51, C-93〜100）
  - json_annotationによる自動生成コードのため、パターンが明確
- **1: 中リスク** - BLoCイベント処理系テストケース（C-01〜20）
  - 非同期処理とエラーハンドリングの組み合わせが複雑
  - モック化が必要なRepositoryとの依存関係
- **1: 中リスク** - ウィジェット系テストケース（C-79〜92）
  - UIテストはFlutterのテストフレームワークに依存
  - WebViewの動作は実機/エミュレータ依存

## 6) レビュアーチェックリスト（最小）
- [ ] BLoCのイベント処理で、すべてのエラーパスが正しくテストされているか確認
- [ ] Repositoryのモック化戦略が適切か確認（実際のAPIを呼ばない）
- [ ] データモデルのfromJson/toJsonで、全フィールドがカバーされているか確認
- [ ] ウィッシュリストのトグル処理（isInWishlist）の状態遷移が正しくテストされているか確認
- [ ] 未ログイン時の認証チェックがすべての該当箇所で行われているか確認
- [ ] icomoonCodeMapの外部依存について、モック戦略を検討
- [ ] WebView関連テストの実行環境要件を確認
