---
generated_at: 2026-03-01 20:40:00
metrics:
  claims_total: 94
  claims_with_evidence: 94
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：plugin-cloud-storage 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：94 / 94、根拠なし：0
- 優先レビュー（高）
  1. **UT-PCS-001〜012**：cloudStoragePluginのコア機能テスト（plugin.ts）
  2. **UT-PCS-013〜021**：afterChangeHookのアップロード処理テスト
  3. **UT-PCS-022〜025**：afterDeleteHookの削除処理テスト
  4. **UT-PCS-087〜094**：createClientUploadHandlerのクライアントサイドテスト

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

- E-01: `packages/plugin-cloud-storage/src/plugin.ts` - cloudStoragePlugin関数、getSkipSafeFetchSetting関数
- E-02: `packages/plugin-cloud-storage/src/types.ts` - PluginOptions、CollectionOptions、GeneratedAdapter等の型定義
- E-03: `packages/plugin-cloud-storage/src/hooks/afterChange.ts` - getAfterChangeHook関数
- E-04: `packages/plugin-cloud-storage/src/hooks/afterDelete.ts` - getAfterDeleteHook関数
- E-05: `packages/plugin-cloud-storage/src/hooks/afterRead.ts` - getAfterReadHook関数
- E-06: `packages/plugin-cloud-storage/src/hooks/beforeChange.ts` - getBeforeChangeHook関数
- E-07: `packages/plugin-cloud-storage/src/hooks/preserveFileData.ts` - getPreserveFileDataHook関数
- E-08: `packages/plugin-cloud-storage/src/utilities/getFilePrefix.ts` - getFilePrefix関数
- E-09: `packages/plugin-cloud-storage/src/utilities/getIncomingFiles.ts` - getIncomingFiles関数
- E-10: `packages/plugin-cloud-storage/src/utilities/initClientUploads.ts` - initClientUploads関数
- E-11: `packages/plugin-cloud-storage/src/fields/getFields.ts` - getFields関数（サーバー版）
- E-12: `packages/plugin-cloud-storage/src/admin/fields/getFields.ts` - getFields関数（admin版）
- E-13: `packages/plugin-cloud-storage/src/admin/index.ts` - cloudStorage関数（admin版プラグイン）
- E-14: `packages/plugin-cloud-storage/src/client/createClientUploadHandler.tsx` - createClientUploadHandler関数

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | cloudStoragePluginがコレクションにフックを設定する | E-01 (plugin.ts L150-167) | ○ |
| C-02 | enabled=falseで元のconfigを返す | E-01 (plugin.ts L26, L62) | ○ |
| C-03 | alwaysInsertFieldsでフィールドのみ挿入 | E-01 (plugin.ts L27-60) | ○ |
| C-04 | adapterなしのコレクションは変更されない | E-01 (plugin.ts L72, L181) | ○ |
| C-05 | disablePayloadAccessControlでhandlers設定が変わる | E-01 (plugin.ts L97-107) | ○ |
| C-06 | disableLocalStorage設定が適用される | E-01 (plugin.ts L171-174) | ○ |
| C-07 | getSkipSafeFetchSettingの動作 | E-01 (plugin.ts L109-148) | ○ |
| C-08 | 開発環境でlocalhostがskipSafeFetchに追加 | E-01 (plugin.ts L143-145) | ○ |
| C-09 | adapter.onInitが呼ばれる | E-01 (plugin.ts L78-80, L183-184) | ○ |
| C-10 | clientUploads設定時の条件付きstaticHandler | E-01 (plugin.ts L101-107) | ○ |
| C-11 | skipSafeFetch配列処理 | E-01 (plugin.ts L117-141) | ○ |
| C-12 | localhost重複チェック | E-01 (plugin.ts L130-138) | ○ |
| C-13 | afterChangeでhandleUploadが呼ばれる | E-03 (afterChange.ts L50-59) | ○ |
| C-14 | 更新時に古いファイルが削除される | E-03 (afterChange.ts L26-47) | ○ |
| C-15 | リサイズ画像も削除される | E-03 (afterChange.ts L33-38) | ○ |
| C-16 | skipCloudStorageコンテキストで処理スキップ | E-03 (afterChange.ts L16-18) | ○ |
| C-17 | ファイル空の場合スキップ | E-03 (afterChange.ts L23) | ○ |
| C-18 | エラー時のログ出力とスロー | E-03 (afterChange.ts L99-105) | ○ |
| C-19 | uploadMetadataでドキュメント更新 | E-03 (afterChange.ts L72-97) | ○ |
| C-20 | 更新失敗時の警告ログ | E-03 (afterChange.ts L92-96) | ○ |
| C-21 | req.fileとpayloadUploadSizesのクリア | E-03 (afterChange.ts L80-81) | ○ |
| C-22 | afterDeleteでhandleDeleteが呼ばれる | E-04 (afterDelete.ts L16-28) | ○ |
| C-23 | 削除時にリサイズ画像も削除 | E-04 (afterDelete.ts L17-20) | ○ |
| C-24 | 削除エラー時はログ出力して継続 | E-04 (afterDelete.ts L30-35) | ○ |
| C-25 | filename空の場合handleDelete呼ばれない | E-04 (afterDelete.ts L24) | ○ |
| C-26 | generateFileURLでカスタムURL生成 | E-05 (afterRead.ts L21-27) | ○ |
| C-27 | disablePayloadAccessControlでadapterのURL生成 | E-05 (afterRead.ts L28-35) | ○ |
| C-28 | size指定時のファイル名使用 | E-05 (afterRead.ts L16) | ○ |
| C-29 | filename不在時の元のvalue返却 | E-05 (afterRead.ts L20, L38) | ○ |
| C-30 | prefixの正しい渡し方（afterRead） | E-05 (afterRead.ts L17) | ○ |
| C-31 | beforeChangeでURL設定 | E-06 (beforeChange.ts L24-30) | ○ |
| C-32 | 新規ファイル名なしでoriginalDoc使用 | E-06 (beforeChange.ts L16-20) | ○ |
| C-33 | prefixの正しい渡し方（beforeChange） | E-06 (beforeChange.ts L21) | ○ |
| C-34 | size指定時のsizes内ファイル名使用 | E-06 (beforeChange.ts L16-17) | ○ |
| C-35 | filename両方なしで元value返却 | E-06 (beforeChange.ts L20, L40) | ○ |
| C-36 | preserveFileDataでcontextにファイル保存 | E-07 (preserveFileData.ts L9-15) | ○ |
| C-37 | payloadUploadSizesも保存 | E-07 (preserveFileData.ts L13) | ○ |
| C-38 | 既存context上書き防止 | E-07 (preserveFileData.ts L9) | ○ |
| C-39 | file未設定時は何もしない | E-07 (preserveFileData.ts L9) | ○ |
| C-40 | context初期化 | E-07 (preserveFileData.ts L10) | ○ |
| C-41 | clientUploadContext.prefix優先 | E-08 (getFilePrefix.ts L15-22) | ○ |
| C-42 | DBからprefix取得 | E-08 (getFilePrefix.ts L26-44) | ○ |
| C-43 | imageSizesファイル名での検索 | E-08 (getFilePrefix.ts L37-39) | ○ |
| C-44 | ファイル未発見時の空文字返却 | E-08 (getFilePrefix.ts L43-44) | ○ |
| C-45 | prefix undefined時の空文字返却 | E-08 (getFilePrefix.ts L44) | ○ |
| C-46 | clientUploadContextが非オブジェクト時 | E-08 (getFilePrefix.ts L16-17) | ○ |
| C-47 | メインファイルのFile配列取得 | E-09 (getIncomingFiles.ts L24-34) | ○ |
| C-48 | リサイズファイルのFile配列取得 | E-09 (getIncomingFiles.ts L36-49) | ○ |
| C-49 | contextからのファイル取得フォールバック | E-09 (getIncomingFiles.ts L18-20) | ○ |
| C-50 | clientUploadContext設定 | E-09 (getIncomingFiles.ts L27) | ○ |
| C-51 | tempFilePath設定 | E-09 (getIncomingFiles.ts L31) | ○ |
| C-52 | file null時の空配列返却 | E-09 (getIncomingFiles.ts L24) | ○ |
| C-53 | filename undefined時の空配列 | E-09 (getIncomingFiles.ts L24) | ○ |
| C-54 | mimeType undefined時の空配列 | E-09 (getIncomingFiles.ts L24) | ○ |
| C-55 | リサイズのmimeTypeなし時スキップ | E-09 (getIncomingFiles.ts L38) | ○ |
| C-56 | enabled時のエンドポイント追加 | E-10 (initClientUploads.ts L22-49) | ○ |
| C-57 | 同一パスハンドラの連番付与 | E-10 (initClientUploads.ts L34-43) | ○ |
| C-58 | admin.dependencies登録 | E-10 (initClientUploads.ts L56-64) | ○ |
| C-59 | provider追加 | E-10 (initClientUploads.ts L74-98) | ○ |
| C-60 | extraClientHandlerProps | E-10 (initClientUploads.ts L92) | ○ |
| C-61 | prefix伝播 | E-10 (initClientUploads.ts L85-86) | ○ |
| C-62 | enabled=false時エンドポイント未追加 | E-10 (initClientUploads.ts L22) | ○ |
| C-63 | endpoints undefined時の初期化 | E-10 (initClientUploads.ts L23-25) | ○ |
| C-64 | admin初期化 | E-10 (initClientUploads.ts L52-54) | ○ |
| C-65 | components初期化 | E-10 (initClientUploads.ts L66-72) | ○ |
| C-66 | URLフィールドのafterReadフック設定 | E-11 (getFields.ts L68-76) | ○ |
| C-67 | URLフィールドのbeforeChangeフック設定 | E-11 (getFields.ts L77-86) | ○ |
| C-68 | 既存URLフィールドの置換 | E-11 (getFields.ts L53-65) | ○ |
| C-69 | imageSizes時のsizesグループフィールド追加 | E-11 (getFields.ts L95-176) | ○ |
| C-70 | 各画像サイズのフック設定 | E-11 (getFields.ts L128-160) | ○ |
| C-71 | prefix設定時のprefixフィールド追加 | E-11 (getFields.ts L179-199) | ○ |
| C-72 | alwaysInsertFieldsでprefixフィールド追加 | E-11 (getFields.ts L179) | ○ |
| C-73 | adapter.fieldsのマージ | E-11 (getFields.ts L49) | ○ |
| C-74 | adapter未設定時のフックなしURLフィールド | E-11 (getFields.ts L88-93) | ○ |
| C-75 | 空フィールド配列時の基本フィールド | E-11 (getFields.ts L49) | ○ |
| C-76 | 既存sizesフィールドのマージ | E-11 (getFields.ts L96-109) | ○ |
| C-77 | admin版URLフィールド追加 | E-12 (admin/getFields.ts L52-55) | ○ |
| C-78 | admin版sizesグループフィールド追加 | E-12 (admin/getFields.ts L57-104) | ○ |
| C-79 | admin版prefixフィールド追加 | E-12 (admin/getFields.ts L107-127) | ○ |
| C-80 | admin版alwaysInsertFields | E-12 (admin/getFields.ts L107) | ○ |
| C-81 | admin版既存sizesマージ | E-12 (admin/getFields.ts L58-72) | ○ |
| C-82 | admin版プラグイン有効時のフィールド設定 | E-13 (admin/index.ts L27-38) | ○ |
| C-83 | admin版プラグイン無効時の元config返却 | E-13 (admin/index.ts L17-19) | ○ |
| C-84 | adapter null時のalwaysInsertFieldsフィールド追加 | E-13 (admin/index.ts L27) | ○ |
| C-85 | collections undefined時の空配列処理 | E-13 (admin/index.ts L23) | ○ |
| C-86 | 未設定collectionそのまま返却 | E-13 (admin/index.ts L40) | ○ |
| C-87 | enabled=trueでsetUploadHandler呼び出し | E-14 (createClientUploadHandler.tsx L47-64) | ○ |
| C-88 | handlerへのapiRoute, serverURL等の引数 | E-14 (createClientUploadHandler.tsx L52-61) | ○ |
| C-89 | extra propsの伝播 | E-14 (createClientUploadHandler.tsx L55) | ○ |
| C-90 | prefix伝播 | E-14 (createClientUploadHandler.tsx L57) | ○ |
| C-91 | childrenのFragmentラップ | E-14 (createClientUploadHandler.tsx L71) | ○ |
| C-92 | enabled=falseでsetUploadHandler未呼び出し | E-14 (createClientUploadHandler.tsx L48) | ○ |
| C-93 | updateFilename関数の伝播 | E-14 (createClientUploadHandler.tsx L51) | ○ |
| C-94 | useEffect内でinitializeHandler実行 | E-14 (createClientUploadHandler.tsx L67-69) | ○ |

## 4) 不足情報（Unknown / Missing）
- なし - すべてのテストケースは対応するソースコードから直接抽出されています

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - すべてのテストケースがソースコードに基づいて生成されている
- 追加検討事項：
  - エラーハンドリングのテストケース（UT-PCS-018, UT-PCS-024）は例外の種類も検証対象に含めることを推奨
  - 非同期処理（Promise.all）の並列実行テストも考慮可能
  - Reactコンポーネント（createClientUploadHandler）のテストにはReact Testing Libraryまたは類似のテストユーティリティが必要

## 6) レビュアーチェックリスト（最小）
- [ ] テストケースがソースコードの主要な分岐をカバーしているか確認
- [ ] 正常系・異常系・境界値のバランスが適切か確認
- [ ] テストIDの命名規則（UT-PCS-XXX）が一貫しているか確認
- [ ] 優先度（高/中/低）の設定が適切か確認
- [ ] 各テストケースの前提条件・入力値・期待結果が明確か確認
- [ ] モック/スタブが必要な外部依存（adapter, req.payload, React hooks）が特定されているか確認
- [ ] クライアントコンポーネントのテストに必要なテストユーティリティが考慮されているか確認
