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

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：103 / 103、根拠なし：0
- 優先レビュー（高）
  1. **UT-SHR-017〜032**: ShareActivityControllerの複数イニシャライザ - 分岐条件の網羅性を確認
  2. **UT-SHR-066〜092**: ShareViewControllerの非同期処理 - タイミング依存テストの実行可能性を確認
  3. **UT-SHR-096〜103**: ShareableArticlesProviderプロトコル拡張 - モック実装の必要性を確認

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

- E-01: `/Users/tomoka.baba/Work/wikipedia-ios-main/Wikipedia/Code/ShareActivityController.swift`
- E-02: `/Users/tomoka.baba/Work/wikipedia-ios-main/Wikipedia/Code/ShareAFactActivityTextItemProvider.swift`
- E-03: `/Users/tomoka.baba/Work/wikipedia-ios-main/Wikipedia/Code/ShareAFactViewController.swift`
- E-04: `/Users/tomoka.baba/Work/wikipedia-ios-main/Wikipedia/Code/ShareViewController.swift`
- E-05: `/Users/tomoka.baba/Work/wikipedia-ios-main/Wikipedia/Code/ShareAFactActivityImageItemProvider.swift`
- E-06: `/Users/tomoka.baba/Work/wikipedia-ios-main/Wikipedia/Code/SharedContainerCacheHousekeeping.swift`

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

### CustomShareActivity (E-01)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | CustomShareActivityのinit(title:imageName:action:)で3つのプロパティが設定される | E-01 L4-13 | ○ |
| C-02 | activityTitleがtitleプロパティを返却する | E-01 L15-17 | ○ |
| C-03 | activityImageがUIImage(named:)を使用する | E-01 L19-21 | ○ |
| C-04 | canPerform(withActivityItems:)が常にtrueを返却する | E-01 L23-25 | ○ |
| C-05 | perform()がactionクロージャを実行する | E-01 L27-29 | ○ |

### AddToReadingListActivity (E-01)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-06 | init(action:)でactionが設定される | E-01 L84-88 | ○ |
| C-07 | activityTitleがCommonStrings.addToReadingListActionTitleを返却する | E-01 L91-93 | ○ |
| C-08 | activityImageが"add-to-reading-list"画像を返却する | E-01 L95-97 | ○ |
| C-09 | canPerform(withActivityItems:)が常にtrueを返却する | E-01 L99-101 | ○ |
| C-10 | perform()がactionクロージャを実行する | E-01 L103-105 | ○ |

### MoveToReadingListActivity (E-01)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-11 | init(action:)でactionが設定される | E-01 L109-113 | ○ |
| C-12 | activityTitleがCommonStrings.moveToReadingListActionTitleを返却する | E-01 L116-118 | ○ |
| C-13 | activityImageが"move-to-reading-list"画像を返却する | E-01 L120-122 | ○ |
| C-14 | canPerform(withActivityItems:)が常にtrueを返却する | E-01 L124-126 | ○ |
| C-15 | perform()がactionクロージャを実行する | E-01 L128-130 | ○ |

### ShareActivityController (E-01)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-16 | init(article:customActivities:)でdisplayTitleがある場合テキストが追加される | E-01 L142-145 | ○ |
| C-17 | shareURLがwmf_URLForTextSharingから取得される | E-01 L146-148 | ○ |
| C-18 | mapItemがある場合itemsに追加される | E-01 L150-152 | ○ |
| C-19 | excludedActivityTypesに.addToReadingListが含まれる | E-01 L156 | ○ |
| C-20 | init(customActivities:article:textActivitySource:)でWMFItemSourceWrapperExcludingActivityTypesが使用される | E-01 L161 | ○ |
| C-21 | copyToPasteboardがテキストソースから除外される | E-01 L161, L169 | ○ |
| C-22 | init(article:image:title:)で画像がある場合wmf_URLForImageSharingが使用される | E-01 L200-202 | ○ |
| C-23 | init(article:image:title:)で画像がない場合wmf_URLForTextSharingが使用される | E-01 L203-204 | ○ |
| C-24 | init(imageInfo:imageDownload:)でアニメーション画像の場合dataが使用される | E-01 L218-219 | ○ |

### ShareAFactActivityTextItemProvider (E-02)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-25 | init(text:articleTitle:articleURL:)で3つのプロパティが設定される | E-02 L4-12 | ○ |
| C-26 | itemプロパティがactivityTypeに応じて異なる表現を返却する | E-02 L15-29 | ○ |
| C-27 | .messageの場合messageRepresentationが返却される | E-02 L18-19 | ○ |
| C-28 | .postToFacebookの場合socialRepresentationが返却される | E-02 L20-21 | ○ |
| C-29 | .postToTwitterの場合socialMentionRepresentationが返却される | E-02 L22-23 | ○ |
| C-30 | .mailの場合emailRepresentationが返却される | E-02 L24-25 | ○ |
| C-31 | activityViewController(_:subjectForActivityType:)がarticleTitleを返却する | E-02 L31-33 | ○ |
| C-32 | emailRepresentationが所定のフォーマットを使用する | E-02 L35-38 | ○ |
| C-33 | defaultRepresentationが所定のフォーマットを使用する | E-02 L40-43 | ○ |
| C-34 | messageRepresentationが所定のフォーマットを使用する | E-02 L45-48 | ○ |
| C-35 | socialRepresentationが所定のフォーマットを使用する | E-02 L50-53 | ○ |
| C-36 | socialMentionRepresentationが所定のフォーマットを使用する | E-02 L55-58 | ○ |

### ShareAFactActivityImageItemProvider (E-05)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-37 | init(image:)でimageが設定される | E-05 L4-8 | ○ |
| C-38 | itemプロパティがimageを返却する | E-05 L11-16 | ○ |

### ShareAFactViewController (E-03)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-39 | viewDidLoad()でTheme.standardが使用される | E-03 L32 | ○ |
| C-40 | グラデーションのcolorsとlocationsが設定される | E-03 L43-46 | ○ |
| C-41 | textMadeWithLabelにローカライズ文字列が設定される | E-03 L40-41 | ○ |
| C-42 | update(with:)でsemanticContentAttributeが設定される | E-03 L50-55 | ○ |
| C-43 | textがnilの場合空文字が使用される | E-03 L56 | ○ |
| C-44 | imageがnilの場合isImageViewHiddenがtrueになる | E-03 L58 | ○ |
| C-45 | テキストが長い場合フォントサイズが小さくなる | E-03 L65-69 | ○ |
| C-46 | imageLicense.codeがnilの場合"generic"が使用される | E-03 L74-75 | ○ |
| C-47 | shortDescriptionがある場合ラベルが追加される | E-03 L76-82 | ○ |
| C-48 | 横長画像の場合レターボックスが設定される | E-03 L95-110 | ○ |
| C-49 | isImageViewHiddenの設定で関連ビューの表示状態が変更される | E-03 L113-119 | ○ |

### ShareViewController (E-04)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-50 | init(text:article:theme:)でarticle.urlがnilの場合nilが返却される | E-04 L26-28 | ○ |
| C-51 | displayTitleがnilの場合空文字が設定される | E-04 L30 | ○ |
| C-52 | 画像URLが640幅で取得される | E-04 L33 | ○ |
| C-53 | modalPresentationStyleがoverCurrentContextに設定される | E-04 L37 | ○ |
| C-54 | viewDidLoad()でbusyLabelとcancelButtonにローカライズ文字列が設定される | E-04 L47-48 | ○ |
| C-55 | viewDidAppear(_:)でloadGroup.waitInBackgroundが呼び出される | E-04 L54-57 | ○ |
| C-56 | loadImage()でinfoFetcher.fetchGalleryInfoが呼び出される | E-04 L76-88 | ○ |
| C-57 | loadImage()でファイル名に"File:"プレフィックスが付与される | E-04 L75 | ○ |
| C-58 | loadImage()で画像取得失敗時にloadGroup.leave()が呼び出される | E-04 L77, L91 | ○ |
| C-59 | createShareAFactCard()でShareAFactViewControllerが作成される | E-04 L100-101 | ○ |
| C-60 | createShareAFactCard()でwmf_snapshotImage()が呼び出される | E-04 L103 | ○ |
| C-61 | showActivityViewController(with:)でcancelButtonが無効化される | E-04 L107 | ○ |
| C-62 | showActivityViewController(with:)で750ms後にアクティビティVCが表示される | E-04 L127 | ○ |
| C-63 | completionWithItemsHandlerでdismissが呼び出される | E-04 L124-126 | ○ |
| C-64 | cancel(_:)でdismissが呼び出される | E-04 L138-140 | ○ |
| C-65 | apply(theme:)でviewIfLoadedがnilの場合早期リターンする | E-04 L144-146 | ○ |
| C-66 | apply(theme:)で背景色が90%の透明度で設定される | E-04 L148 | ○ |
| C-67 | viewWillTransition(to:with:)でconstraintが更新される | E-04 L63-65 | ○ |

### SharedContainerCacheHousekeeping (E-06)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-68 | deleteStaleCachedItems(in:cleanupLevel:)がSharedContainerCacheに委譲される | E-06 L5-7 | ○ |

### ShareableArticlesProvider (E-01)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-69 | share()でarticleが渡された場合createAndPresentShareActivityControllerが呼び出される | E-01 L38-39 | ○ |
| C-70 | share()でarticleURLのみ渡された場合updateOrCreateArticleSummaryForArticleが呼び出される | E-01 L40-47 | ○ |
| C-71 | share()で両方nilの場合falseが返却される | E-01 L49 | ○ |
| C-72 | createAndPresentShareActivityControllerでAddToReadingListActivityが追加される | E-01 L54-62 | ○ |
| C-73 | ReadingListDetailVCの場合MoveToReadingListActivityが追加される | E-01 L64-71 | ○ |
| C-74 | iPadの場合popoverPresentationControllerが設定される | E-01 L74-77 | ○ |

## 4) 不足情報（Unknown / Missing）
- なし
  - 全てのテストケースについて、ソースコード内に対応する実装が確認できました。

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全てのテストケースはソースコードに基づいて生成されており、根拠が明確です。
- 1: 中リスク - 以下の点について追加レビューを推奨します：
  - ShareViewControllerの非同期処理（loadImage, viewDidAppear）のタイミング依存テスト
  - iPadとiPhoneでの分岐処理（UIDevice.current.userInterfaceIdiom）のデバイス依存テスト
  - ShareableArticlesProviderプロトコル拡張のモック実装の複雑さ

## 6) レビュアーチェックリスト（最小）
- [ ] ShareActivityControllerの複数イニシャライザについて、各パラメータの組み合わせが網羅されているか確認
- [ ] ShareAFactActivityTextItemProviderのactivityType分岐について、全てのケースがカバーされているか確認
- [ ] ShareViewControllerの非同期処理について、タイミング依存のテストが実行可能か確認
- [ ] ShareAFactViewControllerの画像処理について、様々なアスペクト比でのテストが考慮されているか確認
- [ ] SharedContainerCacheHousekeepingの委譲処理について、SharedContainerCacheのモック化が可能か確認
- [ ] ShareableArticlesProviderプロトコル拡張について、テスト用の実装クラスの設計が適切か確認
- [ ] iPadとiPhoneの両方のデバイスでのテスト実行を考慮しているか確認
- [ ] ローカライズ文字列（WMFLocalizedString）の検証方法が適切か確認
