---
generated_at: 2026-01-28 17:00:00
metrics:
  claims_total: 127
  claims_with_evidence: 127
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：wmfdata-datacontrollers 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：127 / 127、根拠なし：0
- 優先レビュー（高）
  1. 全テストケースはソースコードから直接導出されており、根拠が明確
  2. API通信関連のテストケースは実際のエンドポイント動作確認が必要な場合あり
  3. CoreData関連のテストケースはモック環境での検証が推奨

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

- E-01: `WMFData/Sources/WMFData/Data Controllers/Shared/WMFArticleDataController.swift`
- E-02: `WMFData/Sources/WMFData/Data Controllers/Watchlist/WMFWatchlistDataController.swift`
- E-03: `WMFData/Sources/WMFData/Data Controllers/Donor Experience/WMFDonateDataController.swift`
- E-04: `WMFData/Sources/WMFData/Data Controllers/Donor Experience/WMFFundraisingCampaignDataController.swift`
- E-05: `WMFData/Sources/WMFData/Data Controllers/Year In Review/WMFYearInReviewDataController.swift`
- E-06: `WMFData/Sources/WMFData/Data Controllers/Growth Tasks/WMFGrowthTasksDataController.swift`
- E-07: `WMFData/Sources/WMFData/Data Controllers/History/WMFHistoryDataController.swift`
- E-08: `WMFData/Sources/WMFData/Data Controllers/Developer Settings/WMFDeveloperSettingsDataController.swift`
- E-09: `WMFData/Sources/WMFData/Data Controllers/Article Tabs/WMFArticleTabsDataController.swift`
- E-10: `WMFData/Sources/WMFData/Data Controllers/Shared/WMFPageViewsDataController.swift`
- E-11: `WMFData/Sources/WMFData/Data Controllers/Experiments/WMFExperimentsDataController.swift`
- E-12: `WMFData/Sources/WMFData/Data Controllers/Explore/WMFExploreDataController.swift`
- E-13: `WMFData/Sources/WMFData/Data Controllers/Saved Articles/WMFSavedArticlesDataController.swift`
- E-14: `WMFData/Sources/WMFData/Data Controllers/Activity Tab/WMFActivityTabDataController.swift`
- E-15: `WMFData/Sources/WMFData/Data Controllers/Shared/WMFArticleSummaryDataController.swift`
- E-16: `WMFData/Sources/WMFData/Data Controllers/Image Recommendations/WMFImageRecommendationsDataController.swift`
- E-17: `WMFData/Sources/WMFData/Data Controllers/Temp Accounts/WMFTempAccountDataController.swift`
- E-18: `WMFData/Sources/WMFData/Data Controllers/Shared/WMFUserImpactDataController.swift`
- E-19: `WMFData/Sources/WMFData/Data Controllers/Shared/WMFGlobalEditCountDataController.swift`
- E-20: `WMFData/Sources/WMFData/Data Controllers/Shared/MessagesDataController.swift`
- E-21: `WMFData/Sources/WMFData/Data Controllers/Shared/WMFCategoriesDataController.swift`
- E-22: `WMFData/Sources/WMFData/Data Controllers/Shared/WMFImageDataController.swift`
- E-23: `WMFData/Sources/WMFData/Data Controllers/GlobalUserInfo/WMFGlobalUserInfoDataController.swift`
- E-24: `WMFData/Sources/WMFData/Data Controllers/Shared/UserContributionsDataController.swift`

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

### WMFArticleDataController (E-01)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | 初期化時にサービスが正しく設定されること | E-01 (line 7-9) | ○ |
| C-02 | すべてのフラグがtrueの場合に初期化成功 | E-01 (line 16-26) | ○ |
| C-03 | すべてのフラグがfalseの場合にエラー | E-01 (line 21-25) | ○ |
| C-04 | 記事情報が正常に取得できること | E-01 (line 72-146) | ○ |
| C-05 | サービスが利用不可の場合にエラー | E-01 (line 74-77) | ○ |
| C-06 | APIレスポンスにページがない場合 | E-01 (line 120-123) | ○ |

### WMFWatchlistDataController (E-02)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-07 | すべてのウォッチリストプロジェクトが返却されること | E-02 (line 14-25) | ○ |
| C-08 | appLanguagesが空の場合 | E-02 (line 16-18) | ○ |
| C-09 | オンのプロジェクトのみ返却されること | E-02 (line 27-31) | ○ |
| C-10 | オフのプロジェクトのみ返却されること | E-02 (line 33-37) | ○ |
| C-11 | フィルタ設定が正しく読み込まれること | E-02 (line 50-53) | ○ |
| C-12 | 設定が存在しない場合にデフォルト値 | E-02 (line 52) | ○ |
| C-13 | フィルタ設定が正しく保存されること | E-02 (line 55-58) | ○ |
| C-14 | アクティブなフィルタ数が正しく計算されること | E-02 (line 60-92) | ○ |
| C-15 | すべてデフォルトの場合は0 | E-02 (line 64) | ○ |
| C-16 | ウォッチリストが正常に取得できること | E-02 (line 96-210) | ○ |
| C-17 | サービスが利用不可の場合にエラー | E-02 (line 98-101) | ○ |
| C-18 | プロジェクトが空の場合 | E-02 (line 106-109) | ○ |
| C-19 | ネットワークエラー時にキャッシュを使用 | E-02 (line 176-184) | ○ |
| C-20 | 記事をウォッチリストに追加できること | E-02 (line 314-351) | ○ |
| C-21 | サービス利用不可の場合にエラー | E-02 (line 316-319) | ○ |
| C-22 | 記事をウォッチリストから削除できること | E-02 (line 355-392) | ○ |
| C-23 | ロールバックが正常に実行されること | E-02 (line 396-435) | ○ |
| C-24 | 取り消しが正常に実行されること | E-02 (line 439-492) | ○ |

### WMFDonateDataController (E-03)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-25 | シングルトンが正しく初期化されること | E-03 (line 31-32) | ○ |
| C-26 | ローカル寄付履歴フラグの読み書き | E-03 (line 21-27) | ○ |
| C-27 | メモリから設定を読み込み | E-03 (line 44-47) | ○ |
| C-28 | キャッシュから設定を読み込み（7日以内） | E-03 (line 49-67) | ○ |
| C-29 | キャッシュが7日以上古い場合 | E-03 (line 58-62) | ○ |
| C-30 | 設定が正常に取得できること | E-03 (line 81-170) | ○ |
| C-31 | サービス利用不可の場合 | E-03 (line 83-86) | ○ |
| C-32 | 支払いが正常に送信されること | E-03 (line 172-249) | ○ |
| C-33 | bypassDonation有効時は即座に成功 | E-03 (line 174-177) | ○ |
| C-34 | 寄付履歴が保存されること | E-03 (line 251-278) | ○ |
| C-35 | すべての寄付履歴が読み込まれること | E-03 (line 288-312) | ○ |
| C-36 | 日付フィルタで寄付履歴が絞り込まれること | E-03 (line 294-311) | ○ |
| C-37 | 寄付履歴が削除されること | E-03 (line 314-317) | ○ |

### WMFFundraisingCampaignDataController (E-04)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-38 | プロジェクトのオプトイン状態を取得 | E-04 (line 47-49) | ○ |
| C-39 | アセットが「後で」としてマークされること | E-04 (line 55-63) | ○ |
| C-40 | 終了日でない場合はtrueを返す | E-04 (line 71-78) | ○ |
| C-41 | 終了日と同日の場合はfalseを返す | E-04 (line 77) | ○ |
| C-42 | アセットが永久非表示としてマークされること | E-04 (line 82-86) | ○ |
| C-43 | アクティブなキャンペーンアセットが読み込まれること | E-04 (line 99-119) | ○ |
| C-44 | キャンペーンがない場合はnilを返す | E-04 (line 117-118) | ○ |
| C-45 | 設定が正常に取得できること | E-04 (line 132-166) | ○ |
| C-46 | バナーオプトイン設定が取得できること | E-04 (line 168-221) | ○ |

### WMFYearInReviewDataController (E-05)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-47 | 初期化が正常に完了すること | E-05 (line 54-67) | ○ |
| C-48 | coreDataStore利用不可でエラー | E-05 (line 56-58) | ○ |
| C-49 | YiR設定が読み込まれること | E-05 (line 45-52) | ○ |
| C-50 | ログアウトユーザーで通知表示条件を満たす場合 | E-05 (line 79-89) | ○ |
| C-51 | 一時アカウントの場合はfalse | E-05 (line 81-83) | ○ |
| C-52 | プロファイルタップフラグの読み書き | E-05 (line 91-97) | ○ |
| C-53 | 機能告知表示条件を満たす場合はtrue | E-05 (line 118-145) | ○ |
| C-54 | エントリーポイント表示条件を満たす場合 | E-05 (line 149-177) | ○ |
| C-55 | 非表示国コードの場合はfalse | E-05 (line 171-174) | ○ |
| C-56 | 実験割り当てが必要な場合はtrue | E-05 (line 229-255) | ○ |
| C-57 | 実験に割り当てられること | E-05 (line 257-278) | ○ |
| C-58 | レポートデータが生成されること | E-05 (line 390-485) | ○ |
| C-59 | 年間レビューレポートが取得できること | E-05 (line 487-500) | ○ |
| C-60 | すべてのレポートが削除されること | E-05 (line 516-532) | ○ |

### WMFGrowthTasksDataController (E-06)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-61 | プロジェクトを指定して初期化 | E-06 (line 10-12) | ○ |
| C-62 | ページIDでレコメンデーションを削除 | E-06 (line 16-22) | ○ |
| C-63 | プロジェクトのレコメンデーションをリセット | E-06 (line 24-26) | ○ |
| C-64 | 画像レコメンデーションが取得できること | E-06 (line 28-75) | ○ |
| C-65 | キャッシュがある場合はキャッシュを返す | E-06 (line 34-38) | ○ |
| C-66 | レコメンデーションが存在する場合true | E-06 (line 166-176) | ○ |

### WMFHistoryDataController (E-07)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-67 | recordsProviderで初期化 | E-07 (line 54-56) | ○ |
| C-68 | 履歴セクションが日付でグループ化されること | E-07 (line 61-86) | ○ |
| C-69 | レコードが空の場合 | E-07 (line 62) | ○ |
| C-70 | 履歴アイテムが削除されること | E-07 (line 88-90) | ○ |
| C-71 | 履歴アイテムが保存されること | E-07 (line 92-94) | ○ |

### WMFDeveloperSettingsDataController (E-08)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-72 | フラグの読み書き | E-08 (line 36-42) | ○ |
| C-73 | 分析フラグの読み書き | E-08 (line 44-50) | ○ |
| C-74 | メモリから設定を読み込み | E-08 (line 137-139) | ○ |
| C-75 | キャッシュから設定を読み込み（4時間以内） | E-08 (line 141-156) | ○ |
| C-76 | キャッシュが4時間以上古い場合 | E-08 (line 148-151) | ○ |
| C-77 | 設定が正常に取得できること | E-08 (line 158-195) | ○ |

### WMFArticleTabsDataController (E-09)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-78 | タブ数が正しく返却されること | E-09 (line 249-259) | ○ |
| C-79 | 新しいタブが作成されること | E-09 (line 265-328) | ○ |
| C-80 | 初期記事なしでメインページタブが作成されること | E-09 (line 279-292) | ○ |
| C-81 | タブが削除されること | E-09 (line 330-346) | ○ |
| C-82 | 最後のタブは削除できない（V2無効時） | E-09 (line 642-644) | ○ |
| C-83 | 記事がタブに追加されること | E-09 (line 360-440) | ○ |
| C-84 | 同じ記事の場合は重複追加しない | E-09 (line 416-420) | ○ |
| C-85 | タブアイテムがcurrentに設定されること | E-09 (line 504-540) | ○ |
| C-86 | 現在のタブIDが返却されること | E-09 (line 716-731) | ○ |
| C-87 | すべてのタブが取得できること | E-09 (line 788-852) | ○ |

### WMFPageViewsDataController (E-10)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-88 | 初期化が正常に完了すること | E-10 (line 113-120) | ○ |
| C-89 | coreDataStore利用不可でエラー | E-10 (line 115-117) | ○ |
| C-90 | ページビューが追加されること | E-10 (line 122-156) | ○ |
| C-91 | 前のページビューとリンクされること | E-10 (line 145-148) | ○ |
| C-92 | 閲覧秒数が追加されること | E-10 (line 158-175) | ○ |
| C-93 | ページビューが削除されること | E-10 (line 177-208) | ○ |
| C-94 | ページビュー数が取得できること | E-10 (line 258-286) | ○ |
| C-95 | 閲覧分数が取得できること | E-10 (line 288-317) | ○ |

### WMFExperimentsDataController (E-11)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-96 | バケットが決定されること | E-11 (line 80-126) | ○ |
| C-97 | 同じ割合なら既存バケットを返す | E-11 (line 90-94) | ○ |
| C-98 | 無効な割合でエラー | E-11 (line 82-84) | ○ |
| C-99 | 保存されたバケットが返却されること | E-11 (line 128-136) | ○ |
| C-100 | 実験がリセットされること | E-11 (line 138-143) | ○ |

### WMFExploreDataController (E-12)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-101 | サーベイ表示フラグの読み書き | E-12 (line 9-15) | ○ |

### WMFSavedArticlesDataController (E-13)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-102 | 保存記事モジュールデータが取得できること | E-13 (line 25-47) | ○ |
| C-103 | タイムラインページが取得できること | E-13 (line 103-165) | ○ |

### WMFActivityTabDataController (E-14)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-104 | 読書時間表示フラグの読み書き | E-14 (line 28-40) | ○ |
| C-105 | 過去7日間の読書時間が取得できること | E-14 (line 100-117) | ○ |
| C-106 | 過去30日の閲覧記事数が取得できること | E-14 (line 119-131) | ○ |
| C-107 | ログインプロンプト表示判定 | E-14 (line 157-166) | ○ |
| C-108 | サーベイ表示判定 | E-14 (line 220-233) | ○ |
| C-109 | 実験割り当てが取得/生成されること | E-14 (line 504-544) | ○ |

### WMFArticleSummaryDataController (E-15)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-110 | 記事サマリーが取得できること | E-15 (line 60-71) | ○ |
| C-111 | キャッシュがある場合はキャッシュを返す | E-15 (line 22-25) | ○ |

### WMFImageRecommendationsDataController (E-16)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-112 | オンボーディングモーダルフラグの読み書き | E-16 (line 34-42) | ○ |
| C-113 | フィードバックが送信されること | E-16 (line 56-93) | ○ |

### WMFTempAccountDataController (E-17)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-114 | 一時アカウント有効フラグが返却されること | E-17 (line 9-11) | ○ |
| C-115 | wiki別の一時アカウント利用可否が確認できること | E-17 (line 22-46) | ○ |

### WMFUserImpactDataController (E-18)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-116 | ユーザーインパクトデータが取得できること | E-18 (line 13-24) | ○ |

### WMFGlobalEditCountDataController (E-19)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-117 | 編集数が取得できること | E-19 (line 14-25) | ○ |

### MessagesDataController (E-20)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-118 | メッセージが取得できること | E-20 (line 33-77) | ○ |
| C-119 | リンクがパースされること | E-20 (line 67-71) | ○ |

### WMFCategoriesDataController (E-21)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-120 | カテゴリが追加されること | E-21 (line 22-59) | ○ |
| C-121 | カテゴリ別カウントが取得できること | E-21 (line 85-122) | ○ |

### WMFImageDataController (E-22)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-122 | 画像データが取得できること | E-22 (line 14-25) | ○ |
| C-123 | キャッシュがある場合はキャッシュを返す | E-22 (line 29-32) | ○ |
| C-124 | 画像情報が取得できること | E-22 (line 53-91) | ○ |

### WMFGlobalUserInfoDataController (E-23)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-125 | グローバルユーザー情報が取得できること | E-23 (line 11-34) | ○ |

### UserContributionsDataController (E-24)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-126 | 最近の編集が取得できること | E-24 (line 10-79) | ○ |
| C-127 | 編集数とページネーション情報が取得できること | E-24 (line 81-136) | ○ |

## 4) 不足情報（Unknown / Missing）
- 該当なし
  - すべてのテストケースはソースコードから直接導出

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - すべてのテストケースは実装コードに基づいており、根拠が明確
- 実際のAPI動作については統合テストでの検証を推奨
- CoreData操作についてはモックを使用したテストを推奨

## 6) レビュアーチェックリスト（最小）
- [ ] 高優先度のテストケース（API通信、CoreData操作）が網羅されているか確認
- [ ] 境界値テストが適切に定義されているか確認
- [ ] エラーハンドリングのテストケースが十分か確認
- [ ] 非同期処理のテストケースが適切に定義されているか確認
- [ ] キャッシュ有効期限のテストケースが正確か確認（7日、4時間等）
