---
generated_at: 2026-01-29 18:05:00
metrics:
  claims_total: 161
  claims_with_evidence: 161
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：Core-Framework-DataAbstractionLayer 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：161 / 161、根拠なし：0
- 優先レビュー（高）
  1. 全てのテストケースはソースコードから直接抽出されており、根拠は十分です
  2. 特に優先的にレビューが必要な項目はありません
  3. ただし、実際のテスト実装時にはエッジケースの追加検討を推奨します

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

- E-01: `src/Core/Framework/DataAbstractionLayer/Entity.php`
- E-02: `src/Core/Framework/DataAbstractionLayer/EntityCollection.php`
- E-03: `src/Core/Framework/DataAbstractionLayer/EntityRepository.php`
- E-04: `src/Core/Framework/DataAbstractionLayer/EntityDefinition.php`
- E-05: `src/Core/Framework/DataAbstractionLayer/EntityWriteResult.php`
- E-06: `src/Core/Framework/DataAbstractionLayer/Search/Criteria.php`
- E-07: `src/Core/Framework/DataAbstractionLayer/Search/EntitySearchResult.php`
- E-08: `src/Core/Framework/DataAbstractionLayer/Search/IdSearchResult.php`
- E-09: `src/Core/Framework/DataAbstractionLayer/DefinitionInstanceRegistry.php`
- E-10: `src/Core/Framework/DataAbstractionLayer/FieldVisibility.php`
- E-11: `src/Core/Framework/DataAbstractionLayer/Version/VersionEntity.php`
- E-12: `src/Core/Framework/DataAbstractionLayer/Version/VersionDefinition.php`
- E-13: `src/Core/Framework/DataAbstractionLayer/Version/Aggregate/VersionCommit/VersionCommitEntity.php`
- E-14: `src/Core/Framework/DataAbstractionLayer/Version/Aggregate/VersionCommit/VersionCommitCollection.php`
- E-15: `src/Core/Framework/DataAbstractionLayer/Version/Aggregate/VersionCommit/VersionCommitDefinition.php`
- E-16: `src/Core/Framework/DataAbstractionLayer/Version/Aggregate/VersionCommitData/VersionCommitDataEntity.php`
- E-17: `src/Core/Framework/DataAbstractionLayer/Version/Aggregate/VersionCommitData/VersionCommitDataCollection.php`
- E-18: `src/Core/Framework/DataAbstractionLayer/Version/Aggregate/VersionCommitData/VersionCommitDataDefinition.php`
- E-19: `src/Core/Framework/DataAbstractionLayer/Write/WriteContext.php`
- E-20: `src/Core/Framework/DataAbstractionLayer/FieldCollection.php`
- E-21: `src/Core/Framework/DataAbstractionLayer/VersionManager.php`

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

### Entity クラス（UT-DAL-001 〜 UT-DAL-022）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Entity.__get でプロパティが取得できる | E-01 (38-46行) | ○ |
| C-02 | Twig描画コンテキストで不可視プロパティアクセス時に例外 | E-01 (40-42行), E-10 | ○ |
| C-03 | Entity.__set でプロパティが設定できる | E-01 (52-56行) | ○ |
| C-04 | Entity.__isset でプロパティ存在確認 | E-01 (61-71行) | ○ |
| C-05 | Twigコンテキストで__issetがfalse返却 | E-01 (63-66行), E-10 | ○ |
| C-06 | setUniqueIdentifier で識別子設定 | E-01 (73-76行) | ○ |
| C-07 | getUniqueIdentifier で識別子取得 | E-01 (78-81行) | ○ |
| C-08 | get メソッドでプロパティ取得 | E-01 (99-120行) | ○ |
| C-09 | get でExtension取得 | E-01 (110-112行) | ○ |
| C-10 | get で PropertyNotFoundException | E-01 (119行) | ○ |
| C-11 | has でプロパティ存在確認 | E-01 (122-131行) | ○ |
| C-12 | has で存在しない場合false | E-01 (130行) | ○ |
| C-13 | getTranslated で翻訳データ取得 | E-01 (136-139行) | ○ |
| C-14 | getTranslation で特定フィールド取得 | E-01 (144-147行) | ○ |
| C-15 | getTranslation で存在しない場合null | E-01 (146行) | ○ |
| C-16 | setTranslated で翻訳データ設定 | E-01 (152-155行) | ○ |
| C-17 | addTranslated で翻訳追加 | E-01 (157-160行) | ○ |
| C-18 | getCreatedAt で作成日時取得 | E-01 (162-165行) | ○ |
| C-19 | getUpdatedAt で更新日時取得 | E-01 (173-175行) | ○ |
| C-20 | jsonSerialize で内部プロパティ除外 | E-01 (182-209行) | ○ |
| C-21 | getApiAlias でエイリアス生成 | E-01 (218-238行) | ○ |
| C-22 | internalSetEntityData で内部データ設定 | E-01 (243-249行) | ○ |

### EntityCollection クラス（UT-DAL-023 〜 UT-DAL-035）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-23 | コンストラクタで初期化 | E-02 (19-28行) | ○ |
| C-24 | fill で要素追加 | E-02 (33-36行) | ○ |
| C-25 | add でエンティティ追加 | E-02 (41-44行) | ○ |
| C-26 | getIds でID配列取得 | E-02 (49-54行) | ○ |
| C-27 | filterByProperty でフィルタ | E-02 (59-66行) | ○ |
| C-28 | filterAndReduceByProperty で削除付きフィルタ | E-02 (71-84行) | ○ |
| C-29 | merge でコレクションマージ | E-02 (89-97行) | ○ |
| C-30 | insert で位置指定挿入 | E-02 (102-113行) | ○ |
| C-31 | getList でID配列から取得 | E-02 (118-121行) | ○ |
| C-32 | sortByIdArray でソート | E-02 (126-140行) | ○ |
| C-33 | getCustomFieldsValues でカスタムフィールド取得 | E-02 (165-183行) | ○ |
| C-34 | getCustomFieldsValue で単一値取得 | E-02 (201-213行) | ○ |
| C-35 | setCustomFields でカスタムフィールド設定 | E-02 (236-250行) | ○ |

### EntityRepository クラス（UT-DAL-036 〜 UT-DAL-049）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-36 | search で検索実行 | E-03 (62-69行) | ○ |
| C-37 | search で全件取得 | E-03 (231-287行) | ○ |
| C-38 | aggregate で集計実行 | E-03 (71-78行) | ○ |
| C-39 | searchIds でID検索 | E-03 (87-94行) | ○ |
| C-40 | update で更新実行 | E-03 (99-108行) | ○ |
| C-41 | upsert で実行 | E-03 (113-122行) | ○ |
| C-42 | create で作成実行 | E-03 (127-136行) | ○ |
| C-43 | delete で削除実行 | E-03 (141-159行) | ○ |
| C-44 | createVersion でバージョン作成 | E-03 (161-170行) | ○ |
| C-45 | versionAwareでない場合例外 | E-03 (165-167行) | ○ |
| C-46 | merge でバージョンマージ | E-03 (172-180行) | ○ |
| C-47 | merge でversionAwareでない場合例外 | E-03 (176-178行) | ○ |
| C-48 | clone でクローン実行 | E-03 (182-204行) | ○ |
| C-49 | clone で不正UUID例外 | E-03 (187-189行) | ○ |

### EntityDefinition クラス（UT-DAL-050 〜 UT-DAL-066）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-50 | getEntityName でエンティティ名取得 | E-04 (124行) | ○ |
| C-51 | getFields でフィールドコレクション取得 | E-04 (126-199行) | ○ |
| C-52 | getField で特定フィールド取得 | E-04 (216-219行) | ○ |
| C-53 | getField で存在しない場合null | E-04 (218行) | ○ |
| C-54 | getPrimaryKeys で主キー取得 | E-04 (306-321行) | ○ |
| C-55 | getTranslationDefinition で翻訳定義取得 | E-04 (276-286行) | ○ |
| C-56 | getTranslationDefinition でnull返却 | E-04 (281-282行) | ○ |
| C-57 | hasAutoIncrement で判定 | E-04 (296-299行) | ○ |
| C-58 | hasCreatedAndUpdatedAtFields で判定 | E-04 (301-304行) | ○ |
| C-59 | isVersionAware で判定 | E-04 (355-358行) | ○ |
| C-60 | isLockAware で判定 | E-04 (360-365行) | ○ |
| C-61 | isSeoAware で判定 | E-04 (367-372行) | ○ |
| C-62 | addExtension で拡張追加 | E-04 (88-93行) | ○ |
| C-63 | removeExtension で拡張削除 | E-04 (98-108行) | ○ |
| C-64 | getCollectionClass でクラス取得 | E-04 (246-249行) | ○ |
| C-65 | getEntityClass でクラス取得 | E-04 (254-257行) | ○ |
| C-66 | isInstanceOf で型判定 | E-04 (76-81行) | ○ |

### EntityWriteResult クラス（UT-DAL-067 〜 UT-DAL-072）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-67 | コンストラクタで初期化 | E-05 (25-38行) | ○ |
| C-68 | 不正operation例外 | E-05 (35-37行) | ○ |
| C-69 | getPrimaryKey で主キー取得 | E-05 (43-46行) | ○ |
| C-70 | getPayload でペイロード取得 | E-05 (51-54行) | ○ |
| C-71 | getOperation で操作種別取得 | E-05 (71-74行) | ○ |
| C-72 | hasPayload でプロパティ確認 | E-05 (81-84行) | ○ |

### Criteria クラス（UT-DAL-073 〜 UT-DAL-094）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-73 | コンストラクタでIDs初期化 | E-06 (120-131行) | ○ |
| C-74 | 空IDs配列で例外 | E-06 (667-669行) | ○ |
| C-75 | 不正ID型で例外 | E-06 (671-674行) | ○ |
| C-76 | addFilter でフィルタ追加 | E-06 (251-258行) | ○ |
| C-77 | setFilter でキー付きフィルタ設定 | E-06 (260-265行) | ○ |
| C-78 | addSorting でソート追加 | E-06 (267-274行) | ○ |
| C-79 | addAggregation で集計追加 | E-06 (276-283行) | ○ |
| C-80 | addPostFilter でPostFilter追加 | E-06 (285-292行) | ○ |
| C-81 | addQuery でスコアクエリ追加 | E-06 (294-301行) | ○ |
| C-82 | getAssociation でCriteria取得 | E-06 (231-249行) | ○ |
| C-83 | ネストパスでアソシエーション取得 | E-06 (233-248行) | ○ |
| C-84 | addAssociation でアソシエーション追加 | E-06 (312-326行) | ○ |
| C-85 | addAssociations で複数追加 | E-06 (343-350行) | ○ |
| C-86 | setLimit で件数制限設定 | E-06 (406-411行) | ○ |
| C-87 | setOffset でオフセット設定 | E-06 (413-418行) | ○ |
| C-88 | setTotalCountMode でモード設定 | E-06 (399-404行) | ○ |
| C-89 | setTerm で検索ターム設定 | E-06 (487-492行) | ○ |
| C-90 | resetSorting でソートリセット | E-06 (357-362行) | ○ |
| C-91 | resetFilters でフィルタリセット | E-06 (378-383行) | ○ |
| C-92 | cloneForRead でクローン | E-06 (497-512行) | ○ |
| C-93 | useIdSorting で判定 | E-06 (575-597行) | ○ |
| C-94 | ソート設定時はIDソート使用しない | E-06 (582-584行) | ○ |

### EntitySearchResult クラス（UT-DAL-095 〜 UT-DAL-101）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-95 | コンストラクタで初期化 | E-07 (34-47行) | ○ |
| C-96 | getTotal でトータル件数取得 | E-07 (65-68行) | ○ |
| C-97 | getEntities でコレクション取得 | E-07 (73-76行) | ○ |
| C-98 | getAggregations で集計結果取得 | E-07 (78-81行) | ○ |
| C-99 | getPage でページ番号計算 | E-07 (44, 125-128行) | ○ |
| C-100 | filter でフィルタリング | E-07 (52-55行) | ○ |
| C-101 | slice でスライス | E-07 (60-63行) | ○ |

### IdSearchResult クラス（UT-DAL-102 〜 UT-DAL-109）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-102 | コンストラクタで初期化 | E-08 (34-43行) | ○ |
| C-103 | fromIds でIdSearchResult作成 | E-08 (48-66行) | ○ |
| C-104 | firstId で最初のID取得 | E-08 (68-84行) | ○ |
| C-105 | 空IDsでnull返却 | E-08 (69-71行) | ○ |
| C-106 | 複合主キーで例外 | E-08 (76-80行) | ○ |
| C-107 | getScore でスコア取得 | E-08 (140-149行) | ○ |
| C-108 | スコア不存在で例外 | E-08 (144-146行) | ○ |
| C-109 | has でID存在確認 | E-08 (154-157行) | ○ |

### DefinitionInstanceRegistry クラス（UT-DAL-110 〜 UT-DAL-119）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-110 | getRepository でリポジトリ取得 | E-09 (39-47行) | ○ |
| C-111 | 未登録エンティティで例外 | E-09 (211-215行) | ○ |
| C-112 | get で定義取得 | E-09 (49-59行) | ○ |
| C-113 | 未登録クラスで例外 | E-09 (58行) | ○ |
| C-114 | getByEntityName で定義取得 | E-09 (81-90行) | ○ |
| C-115 | has で登録確認 | E-09 (73-76行) | ○ |
| C-116 | getDefinitions で全定義取得 | E-09 (95-98行) | ○ |
| C-117 | register で定義登録 | E-09 (144-163行) | ○ |
| C-118 | getByEntityClass で定義取得 | E-09 (135-142行) | ○ |
| C-119 | 未登録エンティティでnull | E-09 (141行) | ○ |

### FieldVisibility クラス（UT-DAL-120 〜 UT-DAL-124）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-120 | コンストラクタで初期化 | E-10 (18行) | ○ |
| C-121 | isVisible で通常コンテキスト判定 | E-10 (22-25行) | ○ |
| C-122 | isVisible でTwigコンテキスト判定 | E-10 (24行) | ○ |
| C-123 | filterInvisible で通常コンテキスト | E-10 (27-31行) | ○ |
| C-124 | filterInvisible でTwigコンテキスト | E-10 (33行) | ○ |

### Version関連エンティティ（UT-DAL-125 〜 UT-DAL-141）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-125 | VersionEntity.getName | E-11 (34-37行) | ○ |
| C-126 | VersionEntity.getCommits | E-11 (24-27行) | ○ |
| C-127 | VersionDefinition.getDefaults | E-12 (42-47行) | ○ |
| C-128 | VersionDefinition.isVersionAware | E-12 (27-30行) | ○ |
| C-129 | VersionCommitEntity.getAutoIncrement | E-13 (30-33行) | ○ |
| C-130 | VersionCommitEntity.getMessage | E-13 (40-43行) | ○ |
| C-131 | VersionCommitEntity.getUserId | E-13 (50-53行) | ○ |
| C-132 | VersionCommitEntity.getIsMerge | E-13 (75-78行) | ○ |
| C-133 | VersionCommitEntity.getData | E-13 (65-68行) | ○ |
| C-134 | VersionCommitCollection.getUserIds | E-14 (17-20行) | ○ |
| C-135 | VersionCommitCollection.filterByUserId | E-14 (22-25行) | ○ |
| C-136 | VersionCommitDataEntity.getEntityName | E-16 (59-62行) | ○ |
| C-137 | VersionCommitDataEntity.getEntityId | E-16 (69-75行) | ○ |
| C-138 | VersionCommitDataEntity.getAction | E-16 (85-88行) | ○ |
| C-139 | VersionCommitDataEntity.getPayload | E-16 (98-101行) | ○ |
| C-140 | VersionCommitDataCollection.filterByEntity | E-17 (15-18行) | ○ |
| C-141 | VersionCommitDataCollection.filterByEntityPrimary | E-17 (20-29行) | ○ |

### WriteContext クラス（UT-DAL-142 〜 UT-DAL-151）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-142 | createFromContext でWriteContext作成 | E-19 (77-83行) | ○ |
| C-143 | set でパス値設定 | E-19 (85-88行) | ○ |
| C-144 | get でパス値取得 | E-19 (90-99行) | ○ |
| C-145 | get で未設定パス例外 | E-19 (93-96行) | ○ |
| C-146 | has でパス存在確認 | E-19 (101-106行) | ○ |
| C-147 | resetPaths でパスリセット | E-19 (113-117行) | ○ |
| C-148 | createWithVersionId でWriteContext作成 | E-19 (119-122行) | ○ |
| C-149 | getLanguageId でUUIDから取得 | E-19 (67-75行) | ○ |
| C-150 | getLanguageId で言語コードから取得 | E-19 (72-73行) | ○ |
| C-151 | scope でスコープ切替 | E-19 (131-141行) | ○ |

### FieldCollection・VersionManager（UT-DAL-152 〜 UT-DAL-161）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-152 | FieldCollection.compile | E-20 (15-22行) | ○ |
| C-153 | VersionManager.upsert | E-21 (84-91行) | ○ |
| C-154 | VersionManager.insert | E-21 (98-105行) | ○ |
| C-155 | VersionManager.update | E-21 (112-119行) | ○ |
| C-156 | VersionManager.delete | E-21 (124-131行) | ○ |
| C-157 | VersionManager.createVersion | E-21 (133-156行) | ○ |
| C-158 | VersionManager.merge | E-21 (158-213行) | ○ |
| C-159 | VersionManager.merge でバージョン不存在例外 | E-21 (167-169行) | ○ |
| C-160 | VersionManager.merge でロック取得失敗例外 | E-21 (163-165行) | ○ |
| C-161 | VersionManager.clone | E-21 (218-227行) | ○ |

## 4) 不足情報（Unknown / Missing）
- 全てのテストケースはソースコードから直接抽出されており、根拠なしの項目はありません。
- ただし、以下の追加テストケースの検討を推奨します：
  - EntityHydrator の挙動に関するテスト
  - CompiledFieldCollection の詳細なテスト
  - 各種Field クラス（IdField, StringField等）の個別テスト

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全てのテストケースがソースコードベースで抽出されています
- DataAbstractionLayerはShopwareのコアフレームワークであり、変更時の影響範囲が広いため、テスト実装時は十分な検証を推奨します
- バージョン管理機能（VersionManager）は複雑なロジックを含むため、統合テストでの検証も推奨します

## 6) レビュアーチェックリスト（最小）
- [ ] Entity クラスのプロパティアクセス関連テスト（UT-DAL-001 〜 UT-DAL-022）が適切か確認
- [ ] EntityCollection のフィルタリング・マージ機能テスト（UT-DAL-027 〜 UT-DAL-032）が網羅的か確認
- [ ] EntityRepository のCRUD操作テスト（UT-DAL-040 〜 UT-DAL-049）が適切か確認
- [ ] Criteria のフィルタ・ソート・アソシエーション関連テスト（UT-DAL-076 〜 UT-DAL-094）が網羅的か確認
- [ ] VersionManager のバージョン管理・マージ機能テスト（UT-DAL-153 〜 UT-DAL-161）が適切か確認
- [ ] 異常系テストケースの境界値が適切か確認
- [ ] 実際のテスト実装時に追加のエッジケースが必要か検討
