---
generated_at: 2026-02-25 12:00:00
metrics:
  claims_total: 54
  claims_with_evidence: 52
  claims_without_evidence: 2
confidence_derived: 0.96
---

# 根拠レポート：decap-cms-editor-component-image 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：52 / 54、根拠なし：2
- 優先レビュー（高）
  1. **C-13 (UT-ECI-013)**: titleに空白のみの場合の挙動 - 既存テストに該当テストケースなし、コード推論のみ
  2. **C-43 (UT-ECI-043)**: 行頭以外から始まるMarkdown画像記法の境界値 - 既存テストに該当テストケースなし、正規表現の^アンカーからの推論

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

- E-01: `packages/decap-cms-editor-component-image/src/index.js` (ソースコード全体、42行)
- E-02: `packages/decap-cms-editor-component-image/src/__tests__/index.spec.js` (既存テスト、75行、14テストケース)
- E-03: `packages/decap-cms-editor-component-image/package.json` (パッケージ定義)

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | UT-ECI-001: 全プロパティ指定時に正しいMarkdown画像記法が生成される | E-01 (L12-13), E-02 (L28-30) | ○ |
| C-02 | UT-ECI-002: imageのみ指定時にalt・titleなしのMarkdown画像記法が生成される | E-01 (L12-13), E-02 (L16-18) | ○ |
| C-03 | UT-ECI-003: imageとalt指定時にtitleなしのMarkdown画像記法が生成される | E-01 (L12-13), E-02 (L20-22) | ○ |
| C-04 | UT-ECI-004: imageとtitle指定時にaltなしのMarkdown画像記法が生成される | E-01 (L12-13), E-02 (L24-26) | ○ |
| C-05 | UT-ECI-005: title内ダブルクォートがバックスラッシュでエスケープされる | E-01 (L13 replace(/"/g, '\\"')), E-02 (L32-36) | ○ |
| C-06 | UT-ECI-006: 空オブジェクトが渡された場合に空のMarkdown画像記法が生成される | E-01 (L12-13 || '' フォールバック), E-02 (L12-14) | ○ |
| C-07 | UT-ECI-007: altがundefinedの場合に空文字として扱われる | E-01 (L13 `alt \|\| ''`) | ○ |
| C-08 | UT-ECI-008: imageがundefinedの場合に空文字として扱われる | E-01 (L13 `image \|\| ''`) | ○ |
| C-09 | UT-ECI-009: titleがundefinedの場合にtitle部分が出力されない | E-01 (L13 `title ? ... : ''`) | ○ |
| C-10 | UT-ECI-010: altが空文字の場合にMarkdown内のalt部分が空になる | E-01 (L13 `alt \|\| ''`) | ○ |
| C-11 | UT-ECI-011: imageが空文字の場合にMarkdown内のURL部分が空になる | E-01 (L13 `image \|\| ''`) | ○ |
| C-12 | UT-ECI-012: titleが空文字の場合にtitle部分が省略される | E-01 (L13 `title ? ... : ''` で空文字はfalsy) | ○ |
| C-13 | UT-ECI-013: titleに空白のみの場合にtitle部分が出力される | E-01 (L13 三項演算子でtruthyチェック、' 'はtruthy) | △ |
| C-14 | UT-ECI-014: 特殊文字を含むaltが正しく出力される | E-01 (L13 altはエスケープなしでそのまま埋め込み) | ○ |
| C-15 | UT-ECI-015: URLにクエリパラメータを含むimageが正しく出力される | E-01 (L13 imageはそのまま埋め込み) | ○ |
| C-16 | UT-ECI-016: 日本語を含むaltとtitleが正しく処理される | E-01 (L12-13 文字列テンプレートリテラル) | ○ |
| C-17 | UT-ECI-017: 完全なMarkdown画像記法のマッチ結果からオブジェクトが正しく生成される | E-01 (L6-11 match[1]=alt, match[2]=image, match[4]=title) | ○ |
| C-18 | UT-ECI-018: altのみのマッチ結果からオブジェクトが生成される | E-01 (L6-11, match[4]はundefined) | ○ |
| C-19 | UT-ECI-019: 空alt・imageのマッチ結果からオブジェクトが生成される | E-01 (L6-11) | ○ |
| C-20 | UT-ECI-020: titleにスペースを含むMarkdownから正しくオブジェクトが生成される | E-01 (L6-11, L20 正規表現のキャプチャ) | ○ |
| C-21 | UT-ECI-021: matchがnullの場合にfalsyな値が返却される | E-01 (L6-7 `match && {...}` 短絡評価) | ○ |
| C-22 | UT-ECI-022: matchがundefinedの場合にfalsyな値が返却される | E-01 (L6-7 `match && {...}` 短絡評価) | ○ |
| C-23 | UT-ECI-023: matchがfalseの場合にfalsyな値が返却される | E-01 (L6-7 `match && {...}` 短絡評価) | ○ |
| C-24 | UT-ECI-024: エスケープされたダブルクォートを含むtitleが正しく抽出される | E-01 (L6-11, L20) | ○ |
| C-25 | UT-ECI-025: 全プロパティ指定時に正しいReact img要素が返却される | E-01 (L15-18), E-02 (L38-42) | ○ |
| C-26 | UT-ECI-026: fieldsからwidget='image'のフィールドを検索してgetAssetに渡す | E-01 (L16 `fields?.find(f => f.get('widget') === 'image')`) | ○ |
| C-27 | UT-ECI-027: fieldsがundefinedの場合にエラーが発生しない | E-01 (L16 `fields?.find` optional chaining) | ○ |
| C-28 | UT-ECI-028: fieldsがnullの場合にエラーが発生しない | E-01 (L16 `fields?.find` optional chaining) | ○ |
| C-29 | UT-ECI-029: altがundefinedの場合にalt属性が空文字になる | E-01 (L18 `alt \|\| ''`) | ○ |
| C-30 | UT-ECI-030: titleがundefinedの場合にtitle属性が空文字になる | E-01 (L18 `title \|\| ''`) | ○ |
| C-31 | UT-ECI-031: getAssetがfalsyな値を返した場合にsrcが空文字になる | E-01 (L18 `src \|\| ''`) | ○ |
| C-32 | UT-ECI-032: fieldsにwidget='image'のフィールドが存在しない場合の動作 | E-01 (L16 find()はundefinedを返す) | ○ |
| C-33 | UT-ECI-033: プロパティなしのMarkdown画像記法にマッチする | E-01 (L20), E-02 (L44-46) | ○ |
| C-34 | UT-ECI-034: 画像パスのみのMarkdown記法にマッチする | E-01 (L20), E-02 (L48-50) | ○ |
| C-35 | UT-ECI-035: altとパスを含むMarkdown記法にマッチする | E-01 (L20), E-02 (L52-54) | ○ |
| C-36 | UT-ECI-036: パスとtitleを含むMarkdown記法にマッチする | E-01 (L20), E-02 (L56-58) | ○ |
| C-37 | UT-ECI-037: 全プロパティ付きのMarkdown画像記法にマッチする | E-01 (L20), E-02 (L60-62) | ○ |
| C-38 | UT-ECI-038: 複数空白がある場合にマッチする | E-01 (L20 `\s`), E-02 (L68-70) | ○ |
| C-39 | UT-ECI-039: エスケープされたクォートを含むtitleのMarkdownにマッチする | E-01 (L20), E-02 (L72-74) | ○ |
| C-40 | UT-ECI-040: マッチ結果のキャプチャグループが正しい | E-01 (L20 正規表現のグループ構造, L6-11 fromBlockでの使用) | ○ |
| C-41 | UT-ECI-041: Markdown画像記法でない文字列にマッチしない | E-01 (L20 正規表現の構造で `^!\[` が必須) | ○ |
| C-42 | UT-ECI-042: Markdownリンク記法（!なし）にマッチしない | E-01 (L20 先頭の `!` が必須) | ○ |
| C-43 | UT-ECI-043: 行頭以外から始まるMarkdown画像記法にマッチしない | E-01 (L20 `^` アンカー) | △ |
| C-44 | UT-ECI-044: labelプロパティが'Image'である | E-01 (L4) | ○ |
| C-45 | UT-ECI-045: idプロパティが'image'である | E-01 (L5) | ○ |
| C-46 | UT-ECI-046: fieldsが3つのフィールド定義を含む | E-01 (L21-38) | ○ |
| C-47 | UT-ECI-047: imageフィールドがwidget='image'かつallow_multiple=false | E-01 (L22-29) | ○ |
| C-48 | UT-ECI-048: altフィールドがlabel='Alt Text', name='alt' | E-01 (L30-33) | ○ |
| C-49 | UT-ECI-049: titleフィールドがlabel='Title', name='title' | E-01 (L34-37) | ○ |
| C-50 | UT-ECI-050: デフォルトエクスポートがimageオブジェクトである | E-01 (L42) | ○ |
| C-51 | UT-ECI-051: 名前付きエクスポートDecapCmsEditorComponentImageがimageオブジェクトと同一 | E-01 (L41) | ○ |
| C-52 | UT-ECI-052: toBlock->pattern->fromBlockのラウンドトリップ（全プロパティ） | E-01 (L6-13, L20) | ○ |
| C-53 | UT-ECI-053: toBlock->pattern->fromBlockのラウンドトリップ（titleなし） | E-01 (L6-13, L20) | ○ |
| C-54 | UT-ECI-054: toBlock->pattern->fromBlockのラウンドトリップ（imageのみ） | E-01 (L6-13, L20) | ○ |

## 4) 不足情報（Unknown / Missing）
- C-13 (UT-ECI-013): titleに空白のみを含む場合の具体的な出力は、ソースコードの三項演算子 `title ? ...` の動作からの推論であり、既存テストでは確認されていない。JavaScriptにおいて `' '` (空白1文字) はtruthyであるという言語仕様に基づく推論。
  - 候補：実際にテスト実行して確認 / コードレビューで確認
- C-43 (UT-ECI-043): 行頭以外から始まるMarkdown画像記法の挙動は、正規表現の `^` アンカーからの推論であり、既存テストでは確認されていない。ただし、`^` アンカーの動作はJavaScript正規表現の標準仕様に基づく。
  - 候補：正規表現の `^` がmultilineフラグなしでどう動作するか確認 / 実際にテスト実行して確認

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 本モジュールは単一ファイル（42行）で構成される小規模モジュールであり、ロジックが明確
- 0: 低リスク - 既存テスト（index.spec.js）が14テストケースを含み、toBlock・pattern・toPreviewの主要な動作は検証済み
- 1: 中リスク - fromBlock関数の既存テストが存在しない（既存テストはtoBlock, pattern, toPreviewのみ）。UT-ECI-017〜024はコード解析に基づく推論
- 0: 低リスク - toPreviewのfieldsパラメータに対するオプショナルチェーン（?.）は実装済みだが、既存テストでのfieldsパラメータ検証は限定的（E-02 L39でgetAssetの第2引数にfieldsを渡していない）

## 6) レビュアーチェックリスト（最小）
- [ ] toBlock関数のフォールバック処理（`|| ''`）が全ケースで期待通りか確認
- [ ] fromBlock関数に対する既存テストが存在しないため、UT-ECI-017〜024のテストケースの妥当性を重点的に確認
- [ ] pattern正規表現の`^`アンカーが行頭マッチのみを意図しているか、multilineでの利用シーンも考慮すべきか確認
- [ ] toPreview関数のfields?.find()のオプショナルチェーンが、fieldsがnull/undefinedの場合も正しく動作するか確認
- [ ] C-13（空白のみのtitle）の期待結果が実際の動作と一致するか確認
- [ ] ラウンドトリップテスト（UT-ECI-052〜054）の期待結果が実際のtoBlock/fromBlockの対称性を正しく反映しているか確認
