---
generated_at: 2026-01-28 10:30:00
metrics:
  claims_total: 71
  claims_with_evidence: 71
  claims_without_evidence: 0
confidence_derived: 1.00
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：71 / 71、根拠なし：0
- 優先レビュー（高）
  1. **SettingsCoordinator.start()**: 画面遷移ロジックのテスト（モック必要）
  2. **SettingsFunnel イベント送信**: EventPlatformClientとの連携テスト
  3. **AppearanceSettingsViewController テーマ適用**: UserDefaultsとの連携テスト

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

- E-01: `/Users/tomoka.baba/Work/wikipedia-ios-main/Wikipedia/Code/SettingsTableViewSection.swift`
- E-02: `/Users/tomoka.baba/Work/wikipedia-ios-main/Wikipedia/Code/SettingsCoordinator.swift`
- E-03: `/Users/tomoka.baba/Work/wikipedia-ios-main/Wikipedia/Code/SettingsFunnel.swift`
- E-04: `/Users/tomoka.baba/Work/wikipedia-ios-main/Wikipedia/Code/AppearanceSettingsViewController.swift`

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

### SettingsTableViewSection（E-01）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | init(items:headerTitle:footerText:)で全プロパティが初期化される | E-01 L7-11 | ○ |
| C-02 | headerTitleがnilでも初期化可能 | E-01 L3（Optional型定義） | ○ |
| C-03 | footerTextがnilでも初期化可能 | E-01 L4（Optional型定義） | ○ |
| C-04 | 空配列での初期化が可能 | E-01 L5（配列型定義） | ○ |
| C-05 | getItems()がitemsを返却 | E-01 L13-15 | ○ |
| C-06 | getHeaderTitle()がheaderTitleを返却 | E-01 L17-19 | ○ |
| C-07 | getHeaderTitle()がnilを返却可能 | E-01 L17-19, L3（Optional型） | ○ |

### SettingsCoordinator（E-02）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-08 | initで依存オブジェクトが保持される | E-02 L18-22 | ○ |
| C-09 | start()でWMFSettingsViewControllerがルートの場合trueを返す | E-02 L30-33 | ○ |
| C-10 | start()で設定画面がモーダル表示される | E-02 L35-38 | ○ |
| C-11 | start()がtrueを返却 | E-02 L32, L38 | ○ |

### SettingsFunnel（E-03）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-12 | sharedがシングルトンインスタンス | E-03 L2 | ○ |
| C-13 | logSyncEnabledInSettings()が同期有効化イベントを送信 | E-03 L22-24 | ○ |
| C-14 | logSyncDisabledInSettings()が同期無効化イベントを送信 | E-03 L26-28 | ○ |
| C-15 | logEnableSyncPopoverImpression()がインプレッションイベントを送信 | E-03 L30-32 | ○ |
| C-16 | logEnableSyncPopoverSyncEnabled()が同期有効化イベントを送信 | E-03 L34-36 | ○ |

### AppearanceSettingsViewController（E-04）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-17 | disclosureTextがUserDefaultsからテーマ表示名を取得 | E-04 L57-59 | ○ |
| C-18 | sectionsForAppearanceSettings()が読書テーマセクションを含む | E-04 L105-106 | ○ |
| C-19 | sectionsForAppearanceSettings()がテーマオプションセクションを含む | E-04 L108 | ○ |
| C-20 | sectionsForAppearanceSettings()がテーブル設定セクションを含む | E-04 L110 | ○ |
| C-21 | sectionsForAppearanceSettings()がテキストサイズセクションを含む | E-04 L112 | ○ |
| C-22 | アイコン選択資格がある場合アイコンセクションが含まれる | E-04 L116-141 | ○ |
| C-23 | アイコン選択資格がない場合アイコンセクションが含まれない | E-04 L145 | ○ |
| C-24 | 期限切れの場合アイコンセクションが含まれない | E-04 L116, L145 | ○ |
| C-25 | numberOfSections(in:)がsections.countを返却 | E-04 L148-150 | ○ |
| C-26 | tableView(_:numberOfRowsInSection:)がitems.countを返却 | E-04 L152-154 | ○ |
| C-27 | CustomViewItemの場合カスタムセルが返却される | E-04 L159-184 | ○ |
| C-28 | SpacerViewItemの場合スペーサーセルが返却される | E-04 L186-193 | ○ |
| C-29 | DimSwitchItemの場合スイッチ付きセルが返却される | E-04 L212-219 | ○ |
| C-30 | AutomaticTableOpenSwitchItemの場合スイッチ付きセルが返却される | E-04 L220-228 | ○ |
| C-31 | IconItemの場合アイコンセルが返却される | E-04 L229-235 | ○ |
| C-32 | userDidSelect(theme:)がテーマ選択通知を送信 | E-04 L262-268 | ○ |
| C-33 | userDidSelect(theme:isImageDimmingEnabled:)が画像減光設定を通知に含む | E-04 L264-266 | ○ |
| C-34 | isImageDimmingEnabledがnilの場合通知に含まれない | E-04 L264-266（条件分岐） | ○ |
| C-35 | heightForRowAt:でCustomViewItemの場合ViewControllerの高さを返却 | E-04 L271-272 | ○ |
| C-36 | heightForRowAt:でSpacerViewItemの場合spacingを返却 | E-04 L273-274 | ○ |
| C-37 | heightForRowAt:で通常アイテムの場合rowHeightを返却 | E-04 L276 | ○ |
| C-38 | didSelectRowAt:でCheckmarkItem選択時checkmarkActionが呼ばれる | E-04 L280-282 | ○ |
| C-39 | didSelectRowAt:でIconItem選択時checkmarkActionが呼ばれる | E-04 L283-285 | ○ |
| C-40 | 選択後tableViewがリロードされる | E-04 L282, L285 | ○ |
| C-41 | willSelectRowAt:でCheckmarkItemの場合indexPathが返却される | E-04 L290-291 | ○ |
| C-42 | willSelectRowAt:でIconItemの場合indexPathが返却される | E-04 L290-291 | ○ |
| C-43 | willSelectRowAt:でその他の場合nilが返却される | E-04 L294 | ○ |
| C-44 | willDisplay:でテーマ一致時チェックマークが表示される | E-04 L300-303 | ○ |
| C-45 | willDisplay:でテーマ不一致時チェックマークが非表示 | E-04 L304-306 | ○ |
| C-46 | Contributorアイコン選択時チェックマーク表示 | E-04 L308-314 | ○ |
| C-47 | デフォルトアイコン選択時チェックマーク表示 | E-04 L310-311 | ○ |
| C-48 | handleImageDimmingSwitchValueChange(_:)で遅延実行 | E-04 L324-328 | ○ |
| C-49 | 前回の遅延実行がキャンセルされる | E-04 L326 | ○ |
| C-50 | applyImageDimmingChange(isOn:)でテーマ選択通知が送信される | E-04 L318-321 | ○ |
| C-51 | handleAutomaticTableOpenSwitchValueChange(_:)で遅延実行 | E-04 L334-338 | ○ |
| C-52 | applyAutomaticTableOpenChange(isOn:)でUserDefaultsに保存される | E-04 L330-332 | ○ |
| C-53 | falseが正しく保存される | E-04 L331 | ○ |
| C-54 | viewForHeaderInSection:でヘッダービューが返却される | E-04 L344-348 | ○ |
| C-55 | viewForFooterInSection:でフッタービューが返却される | E-04 L360-363 | ○ |
| C-56 | フッターテキストがある場合automaticDimensionが返却される | E-04 L357 | ○ |
| C-57 | フッターテキストがない最終セクション以外の場合0が返却される | E-04 L354 | ○ |
| C-58 | 最終セクションでフッターなしの場合44が返却される | E-04 L354 | ○ |
| C-59 | apply(theme:)でテーマが適用される | E-04 L368-376 | ○ |
| C-60 | viewがロードされていない場合早期リターン | E-04 L370-372 | ○ |
| C-61 | didEndDisplaying:でViewControllerが親から削除される | E-04 L254-256 | ○ |
| C-62 | スイッチのターゲットが削除される | E-04 L257-259 | ○ |
| C-63 | deinitで保留中のperformRequestsがキャンセルされる | E-04 L61-63 | ○ |

### データ構造体（E-04）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-64 | AppearanceSettingsDimSwitchItemが初期化可能 | E-04 L9-12 | ○ |
| C-65 | AppearanceSettingsAutomaticTableOpenSwitchItemが初期化可能 | E-04 L14-17 | ○ |
| C-66 | AppearanceSettingsCheckmarkItemが初期化可能 | E-04 L19-24 | ○ |
| C-67 | checkmarkActionが実行可能 | E-04 L23 | ○ |
| C-68 | AppearanceSettingsIconItemが初期化可能 | E-04 L26-31 | ○ |
| C-69 | AppearanceSettingsSectionが初期化可能 | E-04 L33-37 | ○ |
| C-70 | AppearanceSettingsCustomViewItemが初期化可能 | E-04 L39-43 | ○ |
| C-71 | AppearanceSettingsSpacerViewItemが初期化可能 | E-04 L45-49 | ○ |

## 4) 不足情報（Unknown / Missing）
- 該当なし：全てのテストケースはソースコードに基づいて生成されています

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全テストケースがソースコードから直接導出されており、根拠が明確です

### 補足事項
- **EventPlatformClientのモック**: SettingsFunnelのテストではEventPlatformClient.sharedのモックが必要
- **UserDefaultsのモック**: AppearanceSettingsViewControllerのテストではUserDefaultsのモックまたはテスト用のセットアップが必要
- **UINavigationControllerのモック**: SettingsCoordinatorのテストではUINavigationControllerのモックが必要
- **AppIconUtility.sharedのモック**: アイコン選択機能のテストではAppIconUtilityのモックが必要

## 6) レビュアーチェックリスト（最小）
- [ ] SettingsCoordinatorの画面遷移テストでモックの使用が適切か確認
- [ ] SettingsFunnelのイベント送信テストでEventPlatformClientのモック戦略を確認
- [ ] AppearanceSettingsViewControllerのUserDefaults依存テストのセットアップ方法を確認
- [ ] テーマ変更通知（NotificationCenter）のテスト方法を確認
- [ ] アイコン選択機能の条件分岐（qualifiesForIcon2025, isPastEndDate）のテストカバレッジを確認
- [ ] 遅延実行（perform(_:with:afterDelay:)）のテスト方法を確認
