---
generated_at: 2026-01-29 10:30:00
metrics:
  claims_total: 61
  claims_with_evidence: 61
  claims_without_evidence: 0
confidence_derived: 1.00
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：61 / 61、根拠なし：0
- 優先レビュー（高）
  1. **RestrictDeleteフラグの動作検証**：製品と紐づいた単位の削除制約が正しく機能するかの統合テストが必要
  2. **SearchRankingの実効性検証**：検索ランキング設定が実際の検索結果に反映されるかの確認が必要
  3. **翻訳の必須フラグ検証**：翻訳データなしでの単位作成が拒否されることの確認が必要

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

- E-01: `/Users/tomoka.baba/Work/shopware-trunk/src/Core/System/Unit/UnitDefinition.php`
- E-02: `/Users/tomoka.baba/Work/shopware-trunk/src/Core/System/Unit/UnitEntity.php`
- E-03: `/Users/tomoka.baba/Work/shopware-trunk/src/Core/System/Unit/UnitCollection.php`
- E-04: `/Users/tomoka.baba/Work/shopware-trunk/src/Core/System/Unit/UnitEvents.php`
- E-05: `/Users/tomoka.baba/Work/shopware-trunk/src/Core/System/Unit/Aggregate/UnitTranslation/UnitTranslationDefinition.php`
- E-06: `/Users/tomoka.baba/Work/shopware-trunk/src/Core/System/Unit/Aggregate/UnitTranslation/UnitTranslationEntity.php`
- E-07: `/Users/tomoka.baba/Work/shopware-trunk/src/Core/System/Unit/Aggregate/UnitTranslation/UnitTranslationCollection.php`

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

### UnitDefinition クラス（UT-UNIT-001 〜 UT-UNIT-010）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | getEntityName()が'unit'を返却する | E-01 (L26-29, L24) | ○ |
| C-02 | getCollectionClass()がUnitCollection::classを返却する | E-01 (L31-34) | ○ |
| C-03 | getEntityClass()がUnitEntity::classを返却する | E-01 (L36-39) | ○ |
| C-04 | since()が'6.0.0.0'を返却する | E-01 (L41-44) | ○ |
| C-05 | defineFields()がFieldCollectionを返却する | E-01 (L46-56) | ○ |
| C-06 | idフィールドにApiAware, PrimaryKey, Requiredフラグが設定されている | E-01 (L49) | ○ |
| C-07 | shortCodeフィールドにLOW_SEARCH_RANKINGが設定されている | E-01 (L50) | ○ |
| C-08 | nameフィールドにHIGH_SEARCH_RANKINGが設定されている | E-01 (L51) | ○ |
| C-09 | productsリレーションにRestrictDelete, ReverseInheritedが設定されている | E-01 (L53) | ○ |
| C-10 | translationsフィールドにRequiredフラグが設定されている | E-01 (L54) | ○ |

### UnitEntity クラス（UT-UNIT-011 〜 UT-UNIT-024）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-11 | getShortCode()がshortCodeプロパティを返却する | E-02 (L26-29, L18) | ○ |
| C-12 | shortCodeがnull許容である | E-02 (L18) `?string` | ○ |
| C-13 | setShortCode()がshortCodeプロパティを設定する | E-02 (L31-34) | ○ |
| C-14 | setShortCode()がnullを受け入れる | E-02 (L31) `?string $shortCode` | ○ |
| C-15 | getName()がnameプロパティを返却する | E-02 (L36-39, L20) | ○ |
| C-16 | nameがnull許容である | E-02 (L20) `?string` | ○ |
| C-17 | setName()がnameプロパティを設定する | E-02 (L41-44) | ○ |
| C-18 | setName()がnullを受け入れる | E-02 (L41) `?string $name` | ○ |
| C-19 | getTranslations()がUnitTranslationCollectionを返却する | E-02 (L46-49, L22) | ○ |
| C-20 | translationsがnull許容である | E-02 (L22) `?UnitTranslationCollection` | ○ |
| C-21 | setTranslations()がUnitTranslationCollectionを設定する | E-02 (L51-54) | ○ |
| C-22 | getProducts()がProductCollectionを返却する | E-02 (L56-59, L24) | ○ |
| C-23 | productsがnull許容である | E-02 (L24) `?ProductCollection` | ○ |
| C-24 | setProducts()がProductCollectionを設定する | E-02 (L61-64) | ○ |

### UnitCollection クラス（UT-UNIT-025 〜 UT-UNIT-026）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-25 | getApiAlias()が'unit_collection'を返却する | E-03 (L14-17) | ○ |
| C-26 | getExpectedClass()がUnitEntity::classを返却する | E-03 (L19-22) | ○ |

### UnitEvents クラス（UT-UNIT-027 〜 UT-UNIT-030）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-27 | UNIT_WRITTEN_EVENTが'unit.written' | E-04 (L10) | ○ |
| C-28 | UNIT_DELETED_EVENTが'unit.deleted' | E-04 (L12) | ○ |
| C-29 | UNIT_LOADED_EVENTが'unit.loaded' | E-04 (L14) | ○ |
| C-30 | UNIT_TRANSLATION_WRITTEN_EVENTが'unit_translation.written' | E-04 (L22) | ○ |

### UnitTranslationDefinition クラス（UT-UNIT-031 〜 UT-UNIT-038）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-31 | getEntityName()が'unit_translation'を返却する | E-05 (L19-22, L17) | ○ |
| C-32 | getCollectionClass()がUnitTranslationCollection::classを返却する | E-05 (L24-27) | ○ |
| C-33 | getEntityClass()がUnitTranslationEntity::classを返却する | E-05 (L29-32) | ○ |
| C-34 | since()が'6.0.0.0'を返却する | E-05 (L34-37) | ○ |
| C-35 | getParentDefinitionClass()がUnitDefinition::classを返却する | E-05 (L39-42) | ○ |
| C-36 | defineFields()がFieldCollectionを返却する | E-05 (L44-51) | ○ |
| C-37 | shortCodeフィールドにApiAware, Requiredフラグが設定されている | E-05 (L47) | ○ |
| C-38 | nameフィールドにApiAware, Requiredフラグが設定されている | E-05 (L48) | ○ |

### UnitTranslationEntity クラス（UT-UNIT-039 〜 UT-UNIT-051）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-39 | getUnitId()がunitIdプロパティを返却する | E-06 (L23-26, L15) | ○ |
| C-40 | setUnitId()がunitIdプロパティを設定する | E-06 (L28-31) | ○ |
| C-41 | getShortCode()がshortCodeプロパティを返却する | E-06 (L33-36, L17) | ○ |
| C-42 | shortCodeがnull許容である | E-06 (L17) `?string` | ○ |
| C-43 | setShortCode()がshortCodeプロパティを設定する | E-06 (L38-41) | ○ |
| C-44 | setShortCode()がnullを受け入れる | E-06 (L38) `?string $shortCode` | ○ |
| C-45 | getName()がnameプロパティを返却する | E-06 (L43-46, L19) | ○ |
| C-46 | nameがnull許容である | E-06 (L19) `?string` | ○ |
| C-47 | setName()がnameプロパティを設定する | E-06 (L48-51) | ○ |
| C-48 | setName()がnullを受け入れる | E-06 (L48) `?string $name` | ○ |
| C-49 | getUnit()がUnitEntityを返却する | E-06 (L53-56, L21) | ○ |
| C-50 | unitがnull許容である | E-06 (L21) `?UnitEntity` | ○ |
| C-51 | setUnit()がUnitEntityを設定する | E-06 (L58-61) | ○ |

### UnitTranslationCollection クラス（UT-UNIT-052 〜 UT-UNIT-061）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-52 | getUnitIds()がunitIdの配列を返却する | E-07 (L17-20) | ○ |
| C-53 | 空コレクションに対するgetUnitIds()が空配列を返す | E-07 (L17-20) fmap実装 | ○ |
| C-54 | filterByUnitId()が指定IDでフィルタリングする | E-07 (L22-25) | ○ |
| C-55 | filterByUnitId()が該当なしで空コレクションを返す | E-07 (L22-25) filter実装 | ○ |
| C-56 | getLanguageIds()がlanguageIdの配列を返却する | E-07 (L30-33) | ○ |
| C-57 | 空コレクションに対するgetLanguageIds()が空配列を返す | E-07 (L30-33) fmap実装 | ○ |
| C-58 | filterByLanguageId()が指定IDでフィルタリングする | E-07 (L35-38) | ○ |
| C-59 | filterByLanguageId()が該当なしで空コレクションを返す | E-07 (L35-38) filter実装 | ○ |
| C-60 | getApiAlias()が'unit_translation_collection'を返却する | E-07 (L40-43) | ○ |
| C-61 | getExpectedClass()がUnitTranslationEntity::classを返却する | E-07 (L45-48) | ○ |

## 4) 不足情報（Unknown / Missing）
- なし（全ての主張に対してソースコードの根拠が存在）
  - 候補：なし

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全てのテストケースがソースコードに基づいており、根拠が明確

補足事項：
- Core-System-Unit モジュールは比較的シンプルな構造（7ファイル）で、DALエンティティ定義、エンティティ、コレクション、イベント定数で構成
- RestrictDeleteフラグによる削除制約は統合テストでの検証が推奨される
- 多言語対応（翻訳）機能はShopwareの標準パターンに従っている

## 6) レビュアーチェックリスト（最小）
- [ ] UnitDefinitionのdefineFields()で定義されたフィールドが全てカバーされているか確認
- [ ] RestrictDeleteフラグの削除制約テストが統合テストで実施される予定か確認
- [ ] SearchRankingの設定が検索機能に正しく反映されるか確認（統合テスト）
- [ ] 翻訳必須制約（Required flag on translations）の動作確認
- [ ] EntityCustomFieldsTraitの動作がテスト対象として必要か検討
- [ ] EntityIdTraitの動作がテスト対象として必要か検討
