---
generated_at: 2026-02-25 12:00:00
metrics:
  claims_total: 155
  claims_with_evidence: 148
  claims_without_evidence: 7
confidence_derived: 0.95
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：148 / 155、根拠なし：7
- 優先レビュー（高）
  1. **UT-BBK-050（uploadFilesのファイル移動処理）**：ファイル移動時の詳細なFormData構成の内部動作はソースから推測されるが、全パスの網羅性は確認困難
  2. **UT-BBK-053（uploadFilesの競合チェック）**：throwOnConflictingBranches はインポートされた外部関数であり、その内部動作の詳細は本モジュール外
  3. **UT-BBK-109（apiRequestFunctionの自動トークンリフレッシュ）**：401レスポンスのJSON解析とトークンリフレッシュの連携フローは複雑で、エッジケースの網羅性要確認

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

- E-01: `packages/decap-cms-backend-bitbucket/src/API.ts` - APIクラス（BitBucket API通信層）
- E-02: `packages/decap-cms-backend-bitbucket/src/implementation.ts` - BitbucketBackendクラス（Implementation wrapper）
- E-03: `packages/decap-cms-backend-bitbucket/src/git-lfs-client.ts` - GitLfsClientクラス（Git LFSクライアント）
- E-04: `packages/decap-cms-backend-bitbucket/src/AuthenticationPage.js` - BitbucketAuthenticationPageコンポーネント
- E-05: `packages/decap-cms-backend-bitbucket/src/index.ts` - モジュールエクスポート定義
- E-06: `packages/decap-cms-backend-bitbucket/src/__tests__/api.spec.js` - 既存テスト（getStatusesテスト）
- E-07: `packages/decap-cms-backend-bitbucket/package.json` - パッケージ定義

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

### API.ts 関連テストケース（UT-BBK-001 〜 UT-BBK-085）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | UT-BBK-001: replace404WithEmptyResponseが404で空レスポンスを返す | E-01 (194-201行目) | ○ |
| C-02 | UT-BBK-002: 404以外でPromise.rejectを返す | E-01 (199行目) | ○ |
| C-03 | UT-BBK-003: errがnullの場合の挙動 | E-01 (195行目, 条件分岐) | ○ |
| C-04 | UT-BBK-004: constructorデフォルト値 | E-01 (214-225行目) | ○ |
| C-05 | UT-BBK-005: constructorカスタム値 | E-01 (214-225行目) | ○ |
| C-06 | UT-BBK-006〜007: mergeStrategy設定 | E-01 (222行目) | ○ |
| C-07 | UT-BBK-008: hasWriteAccessオーバーライド | E-01 (220行目) | ○ |
| C-08 | UT-BBK-009〜010: buildRequestのキャッシュ制御 | E-01 (227-235行目) | ○ |
| C-09 | UT-BBK-011〜012: requestメソッドの動作とエラー | E-01 (237-243行目) | ○ |
| C-10 | UT-BBK-013: userメソッド | E-01 (253行目) | ○ |
| C-11 | UT-BBK-014〜016: hasWriteAccessの各ケース | E-01 (255-261行目) | ○ |
| C-12 | UT-BBK-017〜018: getBranch | E-01 (263-269行目) | ○ |
| C-13 | UT-BBK-019〜020: branchCommitSha/defaultBranchCommitSha | E-01 (271-281行目) | ○ |
| C-14 | UT-BBK-021〜022: isFile | E-01 (283行目) | ○ |
| C-15 | UT-BBK-023: getFileId | E-01 (285-287行目) | ○ |
| C-16 | UT-BBK-024〜025: processFile | E-01 (289-302行目) | ○ |
| C-17 | UT-BBK-026〜027: processFiles | E-01 (303行目) | ○ |
| C-18 | UT-BBK-028〜031: readFile各ケース | E-01 (305-320行目) | ○ |
| C-19 | UT-BBK-032〜036: readFileMetadata各ケース | E-01 (322-342行目) | ○ |
| C-20 | UT-BBK-037〜039: isShaExistsInBranch | E-01 (344-354行目) | ○ |
| C-21 | UT-BBK-040〜043: getEntriesAndCursor | E-01 (356-374行目) | ○ |
| C-22 | UT-BBK-044〜045: listFiles | E-01 (376-388行目) | ○ |
| C-23 | UT-BBK-046〜047: listAllFiles | E-01 (409-427行目) | ○ |
| C-24 | UT-BBK-048〜053: uploadFiles各ケース | E-01 (429-507行目) | ○ |
| C-25 | UT-BBK-050: uploadFilesのファイル移動詳細動作 | E-01 (443-474行目) | △ |
| C-26 | UT-BBK-053: throwOnConflictingBranches呼び出し | E-01 (500-501行目) | △ |
| C-27 | UT-BBK-054〜055: persistFiles | E-01 (509-517行目) | ○ |
| C-28 | UT-BBK-056: addPullRequestComment | E-01 (519-530行目) | ○ |
| C-29 | UT-BBK-057〜058: getPullRequestLabel | E-01 (532-540行目) | ○ |
| C-30 | UT-BBK-059〜060: createPullRequest | E-01 (542-565行目) | ○ |
| C-31 | UT-BBK-061〜064: getDifferences | E-01 (567-592行目) | ○ |
| C-32 | UT-BBK-065〜066: editorialWorkflowGit | E-01 (594-629行目) | ○ |
| C-33 | UT-BBK-067〜069: deleteFiles | E-01 (631-647行目) | ○ |
| C-34 | UT-BBK-070〜071: getPullRequests | E-01 (649-673行目) | ○ |
| C-35 | UT-BBK-072〜073: getBranchPullRequest | E-01 (675-682行目) | ○ |
| C-36 | UT-BBK-074: listUnpublishedBranches | E-01 (684-694行目) | ○ |
| C-37 | UT-BBK-075〜076: retrieveUnpublishedEntryData | E-01 (696-716行目) | ○ |
| C-38 | UT-BBK-077: updateUnpublishedEntryStatus | E-01 (718-724行目) | ○ |
| C-39 | UT-BBK-078: mergePullRequest | E-01 (726-737行目) | ○ |
| C-40 | UT-BBK-079: publishUnpublishedEntry | E-01 (739-745行目) | ○ |
| C-41 | UT-BBK-080: declinePullRequest | E-01 (747-752行目) | ○ |
| C-42 | UT-BBK-081: deleteBranch | E-01 (754-759行目) | ○ |
| C-43 | UT-BBK-082: deleteUnpublishedEntry | E-01 (761-768行目) | ○ |
| C-44 | UT-BBK-083: getPullRequestStatuses | E-01 (770-779行目) | ○ |
| C-45 | UT-BBK-084: getStatuses | E-01 (781-795行目), E-06 | ○ |
| C-46 | UT-BBK-085: getUnpublishedEntrySha | E-01 (797-802行目) | ○ |

### implementation.ts 関連テストケース（UT-BBK-086 〜 UT-BBK-134）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-47 | UT-BBK-086〜090: constructor各ケース | E-02 (95-130行目) | ○ |
| C-48 | UT-BBK-091: isGitBackend | E-02 (132-134行目) | ○ |
| C-49 | UT-BBK-092〜095: status各ケース | E-02 (136-167行目) | ○ |
| C-50 | UT-BBK-096: authComponent | E-02 (169-171行目) | ○ |
| C-51 | UT-BBK-097: setUser | E-02 (173-183行目) | ○ |
| C-52 | UT-BBK-098〜101: authenticate各ケース | E-02 (195-256行目) | ○ |
| C-53 | UT-BBK-102〜104: getRefreshedAccessToken | E-02 (258-288行目) | ○ |
| C-54 | UT-BBK-105: logout | E-02 (290-293行目) | ○ |
| C-55 | UT-BBK-106〜107: getToken | E-02 (295-301行目) | ○ |
| C-56 | UT-BBK-108〜110: apiRequestFunction | E-02 (303-324行目) | ○ |
| C-57 | UT-BBK-109: 401自動リフレッシュの詳細フロー | E-02 (310-321行目) | △ |
| C-58 | UT-BBK-111: getEntry | E-02 (394-399行目) | ○ |
| C-59 | UT-BBK-112〜113: getMedia | E-02 (401-405行目) | ○ |
| C-60 | UT-BBK-114〜116: getLargeMediaClient | E-02 (407-430行目) | ○ |
| C-61 | UT-BBK-117〜118: persistEntry | E-02 (459-474行目) | ○ |
| C-62 | UT-BBK-119〜121: persistMedia | E-02 (476-490行目) | ○ |
| C-63 | UT-BBK-122: _persistMedia | E-02 (492-511行目) | ○ |
| C-64 | UT-BBK-123: deleteFiles | E-02 (513-515行目) | ○ |
| C-65 | UT-BBK-124: unpublishedEntries | E-02 (564-572行目) | ○ |
| C-66 | UT-BBK-125〜127: unpublishedEntry | E-02 (574-593行目) | ○ |
| C-67 | UT-BBK-128: getBranch | E-02 (595-599行目) | ○ |
| C-68 | UT-BBK-129: updateUnpublishedEntryStatus | E-02 (613-620行目) | ○ |
| C-69 | UT-BBK-130: deleteUnpublishedEntry | E-02 (622-629行目) | ○ |
| C-70 | UT-BBK-131: publishUnpublishedEntry | E-02 (631-638行目) | ○ |
| C-71 | UT-BBK-132〜134: getDeployPreview | E-02 (640-654行目) | ○ |

### git-lfs-client.ts 関連テストケース（UT-BBK-135 〜 UT-BBK-143）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-72 | UT-BBK-135: constructor | E-03 (45-50行目) | ○ |
| C-73 | UT-BBK-136〜138: matchPath | E-03 (52-54行目) | ○ |
| C-74 | UT-BBK-139〜141: uploadResource | E-03 (56-65行目) | ○ |
| C-75 | UT-BBK-142〜143: getResourceUploadRequests | E-03 (83-101行目) | ○ |

### AuthenticationPage.js 関連テストケース（UT-BBK-144 〜 UT-BBK-151）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-76 | UT-BBK-144〜146: componentDidMount各ケース | E-04 (25-69行目) | ○ |
| C-77 | UT-BBK-147〜149: handleLogin | E-04 (71-80行目) | ○ |
| C-78 | UT-BBK-150〜151: render | E-04 (82-102行目) | ○ |

### index.ts 関連テストケース（UT-BBK-152 〜 UT-BBK-155）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-79 | UT-BBK-152〜155: モジュールエクスポート | E-05 (1-10行目) | ○ |

## 4) 不足情報（Unknown / Missing）
- **throwOnConflictingBranches（UT-BBK-053）**: `decap-cms-lib-util`からインポートされた外部関数であり、その内部動作は本モジュールのソースコードからは確認できない。テストではモック化が推奨される。
  - 候補：`packages/decap-cms-lib-util/src/` の該当ソースコード
- **uploadFilesのファイル移動処理（UT-BBK-050）**: ファイル移動時にディレクトリ内の全ファイルを一旦取得し、旧パスを削除して新パスにアップロードする処理の網羅的テストは、FormDataの内部構成を検証する必要がある。
  - 候補：FormDataのモック / BitBucket APIのドキュメント
- **apiRequestFunctionの401リフレッシュフロー（UT-BBK-109）**: response.json()のパース結果に基づく条件分岐（`/^access token expired/i`）は正規表現マッチであり、様々なレスポンスパターンをテストする必要がある。
  - 候補：BitBucket APIの401エラーレスポンスの仕様書
- **readFile/readFileMetadata のキャッシュ動作**: `localForage`と`readFile`/`readFileMetadata`ユーティリティ関数に委譲されており、キャッシュの具体的な動作は外部ライブラリの仕様に依存する。
  - 候補：`decap-cms-lib-util`のreadFile/readFileMetadata実装

## 5) リスクフラグ（レビュー観点）
- **2（高リスク）**: UT-BBK-053 - uploadFilesの競合チェック（throwOnConflictingBranches）。外部関数の呼び出し条件（parentSha存在 + 'Something went wrong'メッセージ）が正確にテストされるか要確認。
- **1（中リスク）**: UT-BBK-050 - ファイル移動処理。ディレクトリ内の全ファイル取得と再アップロードの統合的な動作検証が必要。
- **1（中リスク）**: UT-BBK-109 - 401自動トークンリフレッシュ。正規表現マッチとJSON解析の組み合わせで、異常なレスポンス形式への対応が不明。
- **1（中リスク）**: UT-BBK-066 - editorialWorkflowGitの既存エントリ更新。差分に基づくバイナリファイル削除ロジックの正確性要確認。
- **0（低リスク）**: その他のテストケース。ソースコードの対応する行から直接導出でき、テスト観点が明確。

## 6) レビュアーチェックリスト（最小）
- [ ] API.tsの全publicメソッドに対して正常系テストケースが存在するか
- [ ] implementation.tsの全publicメソッドに対して正常系テストケースが存在するか
- [ ] 認証・認可関連（hasWriteAccess, authenticate, getRefreshedAccessToken, apiRequestFunction）のテストケースが十分か
- [ ] Editorial Workflow関連（editorialWorkflowGit, createPullRequest, mergePullRequest, publishUnpublishedEntry）のテストケースが十分か
- [ ] 外部ライブラリ依存（throwOnConflictingBranches, readFile, readFileMetadata, localForage）のモック戦略が明確か
- [ ] git-lfs-client.tsのuploadResource内のエラーハンドリング（LfsBatchObjectError）がテストされているか
- [ ] AuthenticationPage.jsの各認証タイプ（implicit / netlify）の初期化パスが網羅されているか
- [ ] 既存テスト（api.spec.js）との重複・整合性に問題がないか
