---
generated_at: 2026-02-25 12:00:00
metrics:
  claims_total: 135
  claims_with_evidence: 128
  claims_without_evidence: 7
confidence_derived: 0.95
---

# 根拠レポート：decap-cms-backend-gitea 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：128 / 135、根拠なし：7
- 優先レビュー（高）
  1. **UT-GTA-062 requestAllPages**: getAllResponses関数の実際の挙動が外部依存のため根拠不足
  2. **UT-GTA-111 getMediaFile**: getMediaAsBlob, blobToFileObj, getBlobSHA等の外部ユーティリティ関数の挙動に依存
  3. **UT-GTA-112 persistEntry**: runWithLockの実際のロック動作が外部依存
  4. **UT-GTA-129/130/131/132 render**: レンダリング結果は実行時のUI挙動に依存し、コードの静的解析だけでは完全に検証できない

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `packages/decap-cms-backend-gitea/src/API.ts` - APIクラス定義（468行）
- E-02: `packages/decap-cms-backend-gitea/src/implementation.tsx` - Giteaクラス定義（450行）
- E-03: `packages/decap-cms-backend-gitea/src/AuthenticationPage.js` - 認証ページコンポーネント（80行）
- E-04: `packages/decap-cms-backend-gitea/src/types.ts` - 型定義（261行）
- E-05: `packages/decap-cms-backend-gitea/src/index.ts` - エクスポート定義（3行）
- E-06: `packages/decap-cms-backend-gitea/src/__tests__/API.spec.js` - 既存APIテスト（388行）
- E-07: `packages/decap-cms-backend-gitea/src/__tests__/implementation.spec.js` - 既存implementationテスト（284行）
- E-08: `packages/decap-cms-backend-gitea/package.json` - パッケージ設定

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

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 (UT-GTA-001) | デフォルト値でAPIインスタンスが生成されること | E-01 (L115-130) | ○ |
| C-02 (UT-GTA-002) | カスタム値でAPIインスタンスが生成されること | E-01 (L115-130) | ○ |
| C-03 (UT-GTA-003) | repoURLとoriginRepoURLが正しく構築されること | E-01 (L121-122) | ○ |
| C-04 (UT-GTA-004) | originRepoが指定された場合にoriginRepoURLが別途設定されること | E-01 (L120, L122) | ○ |
| C-05 (UT-GTA-005) | repoOwnerとrepoNameが正しく分割されること | E-01 (L124-129) | ○ |
| C-06 (UT-GTA-006) | 初回呼び出しでユーザー情報が取得されること | E-01 (L134-139) | ○ |
| C-07 (UT-GTA-007) | 2回目以降の呼び出しでキャッシュされたPromiseが返却されること | E-01 (L135-138) | ○ |
| C-08 (UT-GTA-008) | /userエンドポイントへのリクエストが行われること | E-01 (L141-143) | ○ |
| C-09 (UT-GTA-009) | 書き込み権限がある場合にtrueが返却されること | E-01 (L145-155) | ○ |
| C-10 (UT-GTA-010) | 書き込み権限がない場合にfalseが返却されること | E-01 (L150) | ○ |
| C-11 (UT-GTA-011) | repoOwnerがAPIレスポンスのownerに更新されること | E-01 (L149) | ○ |
| C-12 (UT-GTA-012) | リクエストエラー時に例外がスローされること | E-01 (L151-154) | ○ |
| C-13 (UT-GTA-013) | トークンありの場合にAuthorizationヘッダーが含まれること | E-01 (L161-173), E-06 (L33-53) | ○ |
| C-14 (UT-GTA-014) | トークンなしの場合にAuthorizationヘッダーが含まれないこと | E-01 (L167-172) | ○ |
| C-15 (UT-GTA-015) | カスタムヘッダーがマージされること | E-01 (L161-166) | ○ |
| C-16 (UT-GTA-016) | Content-Typeがデフォルトで設定されること | E-01 (L163) | ○ |
| C-17 (UT-GTA-017) | 正常レスポンスのJSONがパースされること | E-01 (L175-181) | ○ |
| C-18 (UT-GTA-018) | レスポンスがokでない場合にrejectされること | E-01 (L177-179) | ○ |
| C-19 (UT-GTA-019) | パラメータなしでURLが構築されること | E-01 (L183-194) | ○ |
| C-20 (UT-GTA-020) | パラメータありでURLが構築されること | E-01 (L183-194) | ○ |
| C-21 (UT-GTA-021) | パラメータ値にエンコードが必要な文字が含まれる場合 | E-01 (L187) | ○ |
| C-22 (UT-GTA-022) | Content-Typeがjsonの場合にparseJsonResponseが呼ばれること | E-01 (L196-208) | ○ |
| C-23 (UT-GTA-023) | Content-Typeがjsonでない場合にテキストが返却されること | E-01 (L200-207) | ○ |
| C-24 (UT-GTA-024) | テキストレスポンスがokでない場合にrejectされること | E-01 (L202-203) | ○ |
| C-25 (UT-GTA-025) | APIErrorがスローされること | E-01 (L210-212) | ○ |
| C-26 (UT-GTA-026) | 認証付きでURLにリクエストが送信されること | E-01 (L218-241), E-06 (L33-53) | ○ |
| C-27 (UT-GTA-027) | エラー時にhandleRequestErrorが呼ばれること | E-01 (L238-240), E-06 (L55-73) | ○ |
| C-28 (UT-GTA-028) | カスタムパーサーが使用されること | E-01 (L221) | ○ |
| C-29 (UT-GTA-029) | cache: 'no-cache'がデフォルトで設定されること | E-01 (L223) | ○ |
| C-30 (UT-GTA-030) | SHAが指定された場合にそのSHAでBlobを取得すること | E-01 (L271-289) | ○ |
| C-31 (UT-GTA-031) | SHAが未指定の場合にgetFileShaでSHAを取得してからBlobを取得すること | E-01 (L284-286) | ○ |
| C-32 (UT-GTA-032) | parseText=trueの場合にテキストコンテンツが返却されること | E-01 (L318-321) | ○ |
| C-33 (UT-GTA-033) | parseText=falseの場合にBlobが返却されること | E-01 (L323-331) | ○ |
| C-34 (UT-GTA-034) | コミット情報からメタデータが取得されること | E-01 (L291-311) | ○ |
| C-35 (UT-GTA-035) | コミット取得失敗時に空のメタデータが返却されること | E-01 (L305-307) | ○ |
| C-36 (UT-GTA-036) | parseText=trueの場合にBase64デコードされたテキストが返却されること | E-01 (L313-321) | ○ |
| C-37 (UT-GTA-037) | parseText=falseの場合にBlobオブジェクトが返却されること | E-01 (L322-331) | ○ |
| C-38 (UT-GTA-038) | force-cacheオプションでリクエストされること | E-01 (L314-316) | ○ |
| C-39 (UT-GTA-039) | depth=1でファイルのみがフィルタされること | E-01 (L334-374), E-06 (L262-342) | ○ |
| C-40 (UT-GTA-040) | depth>1でrecursiveパラメータが設定されること | E-01 (L346-347), E-06 (L303-318) | ○ |
| C-41 (UT-GTA-041) | depth=2でネストされたファイルがフィルタされること | E-01 (L352-356), E-06 (L303-318) | ○ |
| C-42 (UT-GTA-042) | folderSupport=trueの場合にディレクトリも含まれること | E-01 (L353), E-06 (L343-386) | ○ |
| C-43 (UT-GTA-043) | 404エラー時に空配列が返却されること | E-01 (L366-370) | ○ |
| C-44 (UT-GTA-044) | 404以外のエラー時に例外がスローされること | E-01 (L371-373) | ○ |
| C-45 (UT-GTA-045) | パスの先頭/末尾のスラッシュがトリムされること | E-01 (L339) | ○ |
| C-46 (UT-GTA-046) | 返却されるファイルにtype, id, name, path, sizeが含まれること | E-01 (L357-363) | ○ |
| C-47 (UT-GTA-047) | dataFilesとmediaFilesを結合してchangeFilesに渡すこと | E-01 (L376-381), E-06 (L103-192) | ○ |
| C-48 (UT-GTA-048) | POSTリクエストでファイル変更がコミットされること | E-01 (L383-392), E-06 (L169-191) | ○ |
| C-49 (UT-GTA-049) | 新規ファイルに対してcreateオペレーションが生成されること | E-01 (L394-426), E-06 (L104-192) | ○ |
| C-50 (UT-GTA-050) | 既存ファイルに対してupdateオペレーションが生成されること | E-01 (L407-408), E-06 (L104-192) | ○ |
| C-51 (UT-GTA-051) | newPathが指定された場合にfrom_pathが設定されること | E-01 (L409-410) | ○ |
| C-52 (UT-GTA-052) | パスの先頭スラッシュがトリムされること | E-01 (L405) | ○ |
| C-53 (UT-GTA-053) | ファイルが存在する場合にSHAが返却されること | E-01 (L428-448) | ○ |
| C-54 (UT-GTA-054) | ファイルが存在しない場合にAPIError(404)がスローされること | E-01 (L446) | ○ |
| C-55 (UT-GTA-055) | 正しいツリーURLが構築されること | E-01 (L435-439) | ○ |
| C-56 (UT-GTA-056) | 指定されたファイルに対してdelete操作が生成されコミットされること | E-01 (L450-463), E-06 (L195-259) | ○ |
| C-57 (UT-GTA-057) | 文字列がBase64エンコードされること | E-01 (L465-467) | ○ |
| C-58 (UT-GTA-058) | 空文字列がBase64エンコードされること | E-01 (L465-467) | ○ |
| C-59 (UT-GTA-059) | コンテンツキーが生成されること | E-01 (L263-265) | ○ |
| C-60 (UT-GTA-060) | コンテンツキーがパースされること | E-01 (L267-269) | ○ |
| C-61 (UT-GTA-061) | URLをそのまま返す関数が返却されること | E-01 (L243-245) | ○ |
| C-62 (UT-GTA-062) | 全ページのレスポンスが結合されて返却されること | E-01 (L247-261) | △ |
| C-63 (UT-GTA-063) | 呼び出しても何も起こらないこと | E-01 (L157-159) | ○ |
| C-64 (UT-GTA-064) | リクエストオブジェクトがそのまま返却されること | E-01 (L214-216) | ○ |
| C-65 (UT-GTA-065) | 有効な設定でインスタンスが生成されること | E-02 (L64-90) | ○ |
| C-66 (UT-GTA-066) | proxied=falseでrepoが未指定の場合にエラーがスローされること | E-02 (L72-77) | ○ |
| C-67 (UT-GTA-067) | useWorkflow=trueの場合にエラーがスローされること | E-02 (L79-81) | ○ |
| C-68 (UT-GTA-068) | proxied=trueの場合にrepoが未指定でもエラーにならないこと | E-02 (L72-74) | ○ |
| C-69 (UT-GTA-069) | branchの空白がトリムされること | E-02 (L85) | ○ |
| C-70 (UT-GTA-070) | branch未指定時にデフォルトで'master'が設定されること | E-02 (L85) | ○ |
| C-71 (UT-GTA-071) | trueが返却されること | E-02 (L92-94) | ○ |
| C-72 (UT-GTA-072) | 認証済みの場合にauth.status=trueが返却されること | E-02 (L96-107) | ○ |
| C-73 (UT-GTA-073) | 認証失敗時にauth.status=falseが返却されること | E-02 (L100-104) | ○ |
| C-74 (UT-GTA-074) | apiがnullの場合にauth.status=falseが返却されること | E-02 (L98) | ○ |
| C-75 (UT-GTA-075) | AuthenticationPageコンポーネントが返却されること | E-02 (L109-111) | ○ |
| C-76 (UT-GTA-076) | authenticateが呼び出されること | E-02 (L113-115) | ○ |
| C-77 (UT-GTA-077) | トークンを使ってユーザー情報が取得されること | E-02 (L117-126) | ○ |
| C-78 (UT-GTA-078) | 2回目の呼び出しでキャッシュが使用されること | E-02 (L118-119) | ○ |
| C-79 (UT-GTA-079) | admin権限の場合にtrueが返却されること | E-02 (L128-150, L147) | ○ |
| C-80 (UT-GTA-080) | write権限の場合にtrueが返却されること | E-02 (L147) | ○ |
| C-81 (UT-GTA-081) | read権限の場合にfalseが返却されること | E-02 (L147) | ○ |
| C-82 (UT-GTA-082) | username未指定時にcurrentUserからloginを取得すること | E-02 (L135) | ○ |
| C-83 (UT-GTA-083) | 同一ユーザーの2回目呼び出しでキャッシュが使用されること | E-02 (L136-137) | ○ |
| C-84 (UT-GTA-084) | 有効なトークンで認証が成功しユーザー情報が返却されること | E-02 (L152-189) | ○ |
| C-85 (UT-GTA-085) | 認証成功時にAPIインスタンスが生成されること | E-02 (L154-161) | ○ |
| C-86 (UT-GTA-086) | 書き込み権限がない場合にエラーがスローされること | E-02 (L178-179) | ○ |
| C-87 (UT-GTA-087) | リポジトリが見つからない場合にエラーメッセージが書き換えられてスローされること | E-02 (L163-175) | ○ |
| C-88 (UT-GTA-088) | tokenがnullに設定されること | E-02 (L192) | ○ |
| C-89 (UT-GTA-089) | api.resetが呼び出されること | E-02 (L193-195) | ○ |
| C-90 (UT-GTA-090) | apiがnullの場合でもエラーにならないこと | E-02 (L193) | ○ |
| C-91 (UT-GTA-091) | 現在のトークンがPromiseで返却されること | E-02 (L198-200) | ○ |
| C-92 (UT-GTA-092) | トークンがnullの場合にnullが返却されること | E-02 (L198-200) | ○ |
| C-93 (UT-GTA-093) | ページ1で最初の20件が返却されること | E-02 (L202-224), E-07 (L98-147) | ○ |
| C-94 (UT-GTA-094) | ページ2で21-40件目が返却されること | E-02 (L222) | ○ |
| C-95 (UT-GTA-095) | 最初のページでprev/firstアクションが含まれないこと | E-02 (L208-211) | ○ |
| C-96 (UT-GTA-096) | 最後のページでnext/lastアクションが含まれないこと | E-02 (L212-215) | ○ |
| C-97 (UT-GTA-097) | 中間ページで全アクションが含まれること | E-02 (L207-215) | ○ |
| C-98 (UT-GTA-098) | ファイルが0件の場合に空配列とカーソルが返却されること | E-02 (L202-224) | ○ |
| C-99 (UT-GTA-099) | ファイルが20件ちょうどの場合に1ページのみになること | E-02 (L204) | ○ |
| C-100 (UT-GTA-100) | ファイルが21件の場合に2ページになること | E-02 (L204) | ○ |
| C-101 (UT-GTA-101) | フォルダ内のエントリがフィルタされて返却されること | E-02 (L226-255), E-07 (L98-147) | ○ |
| C-102 (UT-GTA-102) | CURSOR_COMPATIBILITY_SYMBOLがresultに設定されること | E-02 (L252-253), E-07 (L138) | ○ |
| C-103 (UT-GTA-103) | 全エントリがフィルタされて返却されること | E-02 (L257-277) | ○ |
| C-104 (UT-GTA-104) | 指定ファイルのエントリが返却されること | E-02 (L279-286) | ○ |
| C-105 (UT-GTA-105) | readFileがエラーの場合に空文字列が返却されること | E-02 (L283) | ○ |
| C-106 (UT-GTA-106) | 単一エントリが取得されること | E-02 (L289-297) | ○ |
| C-107 (UT-GTA-107) | readFileがエラーの場合に空のdataが返却されること | E-02 (L296) | ○ |
| C-108 (UT-GTA-108) | メディアファイル一覧が取得されること | E-02 (L299-308) | ○ |
| C-109 (UT-GTA-109) | mediaFolderが未指定の場合に空配列が返却されること | E-02 (L300-302) | ○ |
| C-110 (UT-GTA-110) | treeタイプのファイルでisDirectory=trueが設定されること | E-02 (L305) | ○ |
| C-111 (UT-GTA-111) | メディアファイルオブジェクトが返却されること | E-02 (L310-327) | △ |
| C-112 (UT-GTA-112) | ロック取得後にpersistFilesが呼び出されること | E-02 (L338-345) | △ |
| C-113 (UT-GTA-113) | メディアファイルが永続化され情報が返却されること | E-02 (L347-363), E-07 (L34-95) | ○ |
| C-114 (UT-GTA-114) | pathの先頭スラッシュがトリムされること | E-02 (L357) | ○ |
| C-115 (UT-GTA-115) | persistFilesがエラーの場合にログ出力後にエラーがスローされること | E-02 (L358-362), E-07 (L74-95) | ○ |
| C-116 (UT-GTA-116) | api.deleteFilesが呼び出されること | E-02 (L365-367) | ○ |
| C-117 (UT-GTA-117) | nextアクションで次ページのエントリが返却されること | E-02 (L369-413), E-07 (L172-198) | ○ |
| C-118 (UT-GTA-118) | prevアクションで前ページのエントリが返却されること | E-02 (L387-389), E-07 (L200-226) | ○ |
| C-119 (UT-GTA-119) | firstアクションで最初のページのエントリが返却されること | E-02 (L375-377), E-07 (L256-282) | ○ |
| C-120 (UT-GTA-120) | lastアクションで最後のページのエントリが返却されること | E-02 (L379-381), E-07 (L228-254) | ○ |
| C-121 (UT-GTA-121) | 不明なアクションの場合にデフォルトでpage=1が返却されること | E-02 (L391-393) | ○ |
| C-122 (UT-GTA-122) | PkceAuthenticatorが正しい設定で初期化されること | E-03 (L30-37) | ○ |
| C-123 (UT-GTA-123) | デフォルトのbase_urlが使用されること | E-03 (L30) | ○ |
| C-124 (UT-GTA-124) | completeAuth成功時にonLoginが呼び出されること | E-03 (L39-46) | ○ |
| C-125 (UT-GTA-125) | completeAuthエラー時にloginErrorがstateに設定されること | E-03 (L40-42) | ○ |
| C-126 (UT-GTA-126) | authenticate成功時にonLoginが呼び出されること | E-03 (L49-58) | ○ |
| C-127 (UT-GTA-127) | authenticate失敗時にloginErrorがstateに設定されること | E-03 (L52-55) | ○ |
| C-128 (UT-GTA-128) | scope: 'repository'でauthenticateが呼び出されること | E-03 (L51) | ○ |
| C-129 (UT-GTA-129) | inProgress=falseの場合にログインボタンが表示されること | E-03 (L60-78) | △ |
| C-130 (UT-GTA-130) | inProgress=trueの場合にログイン中テキストが表示されること | E-03 (L73) | △ |
| C-131 (UT-GTA-131) | loginErrorがある場合にエラーメッセージが表示されること | E-03 (L66) | △ |
| C-132 (UT-GTA-132) | Giteaアイコンが表示されること | E-03 (L72) | △ |
| C-133 (UT-GTA-133) | GiteaBackendがexportされていること | E-05 (L1) | ○ |
| C-134 (UT-GTA-134) | APIがexportされていること | E-05 (L2) | ○ |
| C-135 (UT-GTA-135) | AuthenticationPageがexportされていること | E-05 (L3) | ○ |

## 4) 不足情報（Unknown / Missing）
- **UT-GTA-062 (requestAllPages)**: `getAllResponses`関数はdecap-cms-lib-utilからインポートされた外部関数であり、ページネーションの具体的な挙動は外部モジュールの実装に依存する。テストケースの期待結果は、実装コードから推測した記述となっている。
  - 候補：decap-cms-lib-util/src内のgetAllResponses実装 / 外部モジュールのテスト / APIドキュメント
- **UT-GTA-111 (getMediaFile)**: `getMediaAsBlob`, `blobToFileObj`, `getBlobSHA`等はdecap-cms-lib-utilの外部ユーティリティであり、それらの詳細な入出力仕様はモジュール外にある。
  - 候補：decap-cms-lib-util/src内の各関数実装
- **UT-GTA-112 (persistEntry)**: `runWithLock`の具体的なロック挙動はdecap-cms-lib-utilに依存する。
  - 候補：decap-cms-lib-util/src内のrunWithLock実装
- **UT-GTA-129〜132 (render関連)**: UIレンダリングの結果はReactコンポーネントの実行時挙動に依存し、JSXから静的に推定した内容となっている。実際のレンダリング結果にはテスティングライブラリでの検証が必要。
  - 候補：@testing-library/reactでのレンダリングテスト / スナップショットテスト

## 5) リスクフラグ（レビュー観点）
- **リスク0（低リスク）**: テストケースの大部分（128/135）はソースコードから直接的に導出されており、信頼性が高い
- **リスク1（中リスク）**: 外部ユーティリティ関数に依存するテストケース（UT-GTA-062, 111, 112）は、外部モジュールの実装変更に影響を受ける可能性がある
- **リスク1（中リスク）**: UIレンダリング関連のテストケース（UT-GTA-129〜132）は、Reactコンポーネントの実行時挙動に依存するため、静的解析のみでは完全に検証できない
- **リスク0（低リスク）**: 既存テスト（E-06, E-07）との整合性は確認済みであり、既存テストでカバーされている範囲は信頼性が高い

## 6) レビュアーチェックリスト（最小）
- [ ] APIクラスのconstructor関連テストケース（UT-GTA-001〜005）でデフォルト値とカスタム値のカバレッジが十分か
- [ ] 認証関連テストケース（UT-GTA-084〜087）でエラーパスが網羅されているか
- [ ] ページネーション関連テストケース（UT-GTA-093〜100）で境界値が適切か
- [ ] 外部依存関数（getAllResponses, getMediaAsBlob, runWithLock等）のモック戦略がテストケースの前提条件で明確か
- [ ] AuthenticationPageのレンダリングテスト（UT-GTA-129〜132）の期待結果が実装と整合しているか
- [ ] 既存テストコード（E-06, E-07）でカバーされていない新規テストケースの妥当性を確認
