---
generated_at: 2026-03-01 10:30:00
metrics:
  claims_total: 50
  claims_with_evidence: 50
  claims_without_evidence: 0
confidence_derived: 1.00
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：50 / 50、根拠なし：0
- 優先レビュー（高）
  - すべてのテストケースがソースコードから直接導出されており、根拠不足の項目はありません

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

- E-01: `packages/storage-uploadthing/src/utilities.ts` - getKeyFromFilename関数定義（L1-24）
- E-02: `packages/storage-uploadthing/src/generateURL.ts` - generateURL関数定義（L1-10）
- E-03: `packages/storage-uploadthing/src/handleUpload.ts` - getHandleUpload関数定義（L1-67）
- E-04: `packages/storage-uploadthing/src/handleDelete.ts` - getHandleDelete関数定義（L1-35）
- E-05: `packages/storage-uploadthing/src/staticHandler.ts` - getHandler関数定義（L1-157）
- E-06: `packages/storage-uploadthing/src/getClientUploadRoute.ts` - getClientUploadRoute関数定義（L1-69）
- E-07: `packages/storage-uploadthing/src/getClientUploadRoute.ts` - defaultAccess関数定義（L19）
- E-08: `packages/storage-uploadthing/src/index.ts` - uploadthingStorage関数定義（L74-152）
- E-09: `packages/storage-uploadthing/src/index.ts` - uploadthingInternal関数定義（L154-186）
- E-10: `packages/storage-uploadthing/src/client/UploadthingClientUploadHandler.ts` - UploadthingClientUploadHandler定義（L1-24）
- E-11: `packages/storage-uploadthing/package.json` - パッケージ構成情報

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

### utilities.ts - getKeyFromFilename
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | docのfilenameが一致し_keyが存在する場合_keyが返却される | E-01 (L5-12) | ○ |
| C-02 | sizes内のfilenameが一致し_keyが存在する場合_keyが返却される | E-01 (L14-22) | ○ |
| C-03 | docがnullの場合undefinedが返却される | E-01 (L5: 条件分岐) | ○ |
| C-04 | docがundefinedの場合undefinedが返却される | E-01 (L5: 条件分岐) | ○ |
| C-05 | docがオブジェクトでない場合undefinedが返却される | E-01 (L6: typeof doc === 'object') | ○ |
| C-06 | filenameが一致しない場合undefinedが返却される | E-01 (L9: doc.filename === filename) | ○ |
| C-07 | _keyが存在しない場合undefinedが返却される | E-01 (L10: '_key' in doc) | ○ |
| C-08 | sizesが空オブジェクトの場合undefinedが返却される | E-01 (L17: Object.values(sizes)) | ○ |

### generateURL.ts - generateURL
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-09 | 有効なdataとfilenameでURLが生成される | E-02 (L7-9) | ○ |
| C-10 | prefixが指定された場合prefixを含むURLが生成される | E-02 (L9: path.posix.join(prefix, key)) | ○ |
| C-11 | _keyが存在しない場合空のキーでURLが生成される | E-02 (L8-9: key || '') | ○ |
| C-12 | prefixが空文字の場合正常にURLが生成される | E-02 (L7: prefix = '') | ○ |

### handleUpload.ts - getHandleUpload
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-13 | ファイルが正常にアップロードされた場合dataが更新される | E-03 (L27-48) | ○ |
| C-14 | サイズ別ファイルの場合data.sizes内の対応エントリが更新される | E-03 (L37-42) | ○ |
| C-15 | clientUploadContextにkeyが存在する場合古いファイルが削除される | E-03 (L17-25) | ○ |
| C-16 | UTApiがエラーを返した場合APIErrorがスローされる | E-03 (L32-33) | ○ |
| C-17 | FiberFailure形式のエラーの場合適切なエラーメッセージでAPIErrorがスローされる | E-03 (L52-59) | ○ |
| C-18 | 一般的なErrorの場合エラーメッセージ付きAPIErrorがスローされる | E-03 (L61-63) | ○ |

### handleDelete.ts - getHandleDelete
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-19 | 有効なkeyでファイルが正常に削除される | E-04 (L23-26) | ○ |
| C-20 | keyが取得できない場合APIErrorがスローされる | E-04 (L16-21) | ○ |
| C-21 | UTApiがエラーをスローした場合APIErrorがスローされる | E-04 (L27-33) | ○ |

### staticHandler.ts - getHandler
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-22 | 有効なkeyでファイルが正常に取得される | E-05 (L98-107, L148-151) | ○ |
| C-23 | clientUploadContextにkeyが存在する場合そのkeyが使用される | E-05 (L22-28) | ○ |
| C-24 | docが存在しない場合DBから検索される | E-05 (L30-59) | ○ |
| C-25 | Rangeリクエストの場合部分レスポンスが返却される | E-05 (L87-103) | ○ |
| C-26 | ETagが一致する場合304 Not Modifiedが返却される | E-05 (L141-146) | ○ |
| C-27 | SVGファイルの場合Content-Security-Policyヘッダーが追加される | E-05 (L129-131) | ○ |
| C-28 | modifyResponseHeadersが定義されている場合ヘッダーが変更される | E-05 (L133-139) | ○ |
| C-29 | docが見つからない場合404が返却される | E-05 (L62-64) | ○ |
| C-30 | keyが取得できない場合404が返却される | E-05 (L69-71) | ○ |
| C-31 | signedURLが取得できない場合404が返却される | E-05 (L75-77) | ○ |
| C-32 | HEADリクエストが失敗した場合404が返却される | E-05 (L81-83) | ○ |
| C-33 | 無効なRangeヘッダーの場合416が返却される | E-05 (L91-96) | ○ |
| C-34 | 予期しないエラーの場合500が返却される | E-05 (L152-155) | ○ |

### getClientUploadRoute.ts - getClientUploadRoute / defaultAccess
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-35 | 有効なリクエストでアップロードルートが処理される | E-06 (L64-68) | ○ |
| C-36 | collectionSlugが存在しない場合APIErrorがスローされる | E-06 (L51-53) | ○ |
| C-37 | アクセスが拒否された場合Forbiddenがスローされる | E-06 (L55-57) | ○ |
| C-38 | カスタムaccess関数が使用される | E-06 (L29, L55) | ○ |
| C-39 | req.userが存在する場合trueが返却される | E-07 (L19) | ○ |
| C-40 | req.userが存在しない場合falseが返却される | E-07 (L19: !!req.user) | ○ |

### index.ts - uploadthingStorage / uploadthingInternal
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-41 | プラグインが有効な場合cloudStoragePluginが適用される | E-08 (L148-151) | ○ |
| C-42 | プラグインが無効な場合incomingConfigがそのまま返却される | E-08 (L99-101) | ○ |
| C-43 | aclが未指定の場合public-readがデフォルトで設定される | E-08 (L104-106) | ○ |
| C-44 | コレクションにdisableLocalStorage:trueが設定される | E-08 (L131-146) | ○ |
| C-45 | clientUploadsが有効な場合initClientUploadsが呼び出される | E-08 (L79-97) | ○ |
| C-46 | clientUploadsにaccess関数が指定された場合それが使用される | E-08 (L85-88) | ○ |
| C-47 | GeneratedAdapterが正しく生成される | E-09 (L168-185) | ○ |
| C-48 | _keyフィールドがfieldsに含まれる | E-09 (L155-166) | ○ |

### client/UploadthingClientUploadHandler.ts
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-49 | ファイルがアップロードされkeyが返却される | E-10 (L18-22) | ○ |
| C-50 | 正しいエンドポイントURLが生成される | E-10 (L8-16) | ○ |

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

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - すべてのテストケースがソースコードから確認可能な根拠に基づいています

### 技術的考慮事項
- UTApi（Uploadthing API）はモック化が必要なため、統合テスト環境の構築が必要
- `fetch`関数の呼び出し箇所（staticHandler.ts）もモック化が必要
- クライアントサイドコンポーネント（UploadthingClientUploadHandler.ts）のテストにはブラウザ環境のシミュレーションが必要

## 6) レビュアーチェックリスト（最小）
- [ ] getKeyFromFilename関数のテストケースが型安全性を十分にカバーしているか確認
- [ ] エラーハンドリングのテストケースがすべての例外パスをカバーしているか確認
- [ ] Range リクエスト処理のテストケースが境界値を適切にカバーしているか確認
- [ ] アクセス制御関連のテストケースがセキュリティ要件を満たしているか確認
- [ ] クライアントアップロードハンドラーのテストケースがエラー時の挙動をカバーしているか確認
