---
generated_at: 2026-01-29 12:00:00
metrics:
  claims_total: 145
  claims_with_evidence: 145
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート: Core-Content-MailTemplate 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）: **1.00**
  - 根拠あり: 145 / 145、根拠なし: 0
- 優先レビュー（高）
  1. **UT-MLT-095〜UT-MLT-100**: MailActionControllerの統合的な動作確認が必要
  2. **UT-MLT-097〜UT-MLT-098**: Twigテンプレート検証の異常系テストは実際のTwigエラーハンドリングを確認
  3. **UT-MLT-109〜UT-MLT-142**: イベントクラスのFlow連携機能は実際のフロー実行で確認が必要

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

- E-01: `src/Core/Content/MailTemplate/MailTemplateEntity.php`
- E-02: `src/Core/Content/MailTemplate/MailTemplateDefinition.php`
- E-03: `src/Core/Content/MailTemplate/MailTemplateCollection.php`
- E-04: `src/Core/Content/MailTemplate/MailTemplateTypes.php`
- E-05: `src/Core/Content/MailTemplate/MailTemplateEvents.php`
- E-06: `src/Core/Content/MailTemplate/MailTemplateException.php`
- E-07: `src/Core/Content/MailTemplate/Aggregate/MailTemplateType/MailTemplateTypeEntity.php`
- E-08: `src/Core/Content/MailTemplate/Aggregate/MailTemplateType/MailTemplateTypeDefinition.php`
- E-09: `src/Core/Content/MailTemplate/Aggregate/MailTemplateType/MailTemplateTypeCollection.php`
- E-10: `src/Core/Content/MailTemplate/Aggregate/MailHeaderFooter/MailHeaderFooterEntity.php`
- E-11: `src/Core/Content/MailTemplate/Aggregate/MailHeaderFooter/MailHeaderFooterDefinition.php`
- E-12: `src/Core/Content/MailTemplate/Aggregate/MailHeaderFooter/MailHeaderFooterCollection.php`
- E-13: `src/Core/Content/MailTemplate/Aggregate/MailTemplateMedia/MailTemplateMediaEntity.php`
- E-14: `src/Core/Content/MailTemplate/Aggregate/MailTemplateMedia/MailTemplateMediaDefinition.php`
- E-15: `src/Core/Content/MailTemplate/Aggregate/MailTemplateMedia/MailTemplateMediaCollection.php`
- E-16: `src/Core/Content/MailTemplate/Aggregate/MailTemplateTranslation/MailTemplateTranslationEntity.php`
- E-17: `src/Core/Content/MailTemplate/Aggregate/MailTemplateTranslation/MailTemplateTranslationDefinition.php`
- E-18: `src/Core/Content/MailTemplate/Aggregate/MailTemplateTranslation/MailTemplateTranslationCollection.php`
- E-19: `src/Core/Content/MailTemplate/Aggregate/MailTemplateTypeTranslation/MailTemplateTypeTranslationEntity.php`
- E-20: `src/Core/Content/MailTemplate/Aggregate/MailTemplateTypeTranslation/MailTemplateTypeTranslationDefinition.php`
- E-21: `src/Core/Content/MailTemplate/Aggregate/MailTemplateTypeTranslation/MailTemplateTypeTranslationCollection.php`
- E-22: `src/Core/Content/MailTemplate/Aggregate/MailHeaderFooterTranslation/MailHeaderFooterTranslationEntity.php`
- E-23: `src/Core/Content/MailTemplate/Aggregate/MailHeaderFooterTranslation/MailHeaderFooterTranslationDefinition.php`
- E-24: `src/Core/Content/MailTemplate/Aggregate/MailHeaderFooterTranslation/MailHeaderFooterTranslationCollection.php`
- E-25: `src/Core/Content/MailTemplate/Api/MailActionController.php`
- E-26: `src/Core/Content/MailTemplate/Subscriber/MailSendSubscriberConfig.php`
- E-27: `src/Core/Content/MailTemplate/Service/Event/MailSentEvent.php`
- E-28: `src/Core/Content/MailTemplate/Service/Event/MailBeforeSentEvent.php`
- E-29: `src/Core/Content/MailTemplate/Service/Event/MailBeforeValidateEvent.php`
- E-30: `src/Core/Content/MailTemplate/Service/Event/MailErrorEvent.php`
- E-31: `src/Core/Content/MailTemplate/Exception/MailTemplateRendererException.php`
- E-32: `src/Core/Content/MailTemplate/Exception/MailEventConfigurationException.php`
- E-33: `src/Core/Content/MailTemplate/Exception/SalesChannelNotFoundException.php` (deprecated)

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

### MailTemplateEntity (UT-MLT-001〜UT-MLT-015)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | MailTemplateEntity.getMailTemplateType()はMailTemplateTypeEntityを返却 | E-01 (行39-42) | ○ |
| C-02 | MailTemplateEntity.getSystemDefault()はboolを返却 | E-01 (行49-51) | ○ |
| C-03 | MailTemplateEntity.getSenderName()はnull許容 | E-01 (行25, 59-61) | ○ |
| C-04 | MailTemplateEntity.getSubject()はnull許容 | E-01 (行29, 79-81) | ○ |
| C-05 | MailTemplateEntity.getContentHtml()はnull許容 | E-01 (行31, 89-91) | ○ |
| C-06 | MailTemplateEntity.getContentPlain()はnull許容 | E-01 (行33, 99-101) | ○ |
| C-07 | MailTemplateEntity.getTranslations()はMailTemplateTranslationCollectionを返却 | E-01 (行35, 109-111) | ○ |
| C-08 | MailTemplateEntity.getMedia()はMailTemplateMediaCollectionを返却 | E-01 (行37, 119-121) | ○ |

### MailTemplateDefinition (UT-MLT-016〜UT-MLT-019)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-09 | MailTemplateDefinition.ENTITY_NAME = 'mail_template' | E-02 (行27) | ○ |
| C-10 | MailTemplateDefinition.getEntityClass()はMailTemplateEntity::classを返却 | E-02 (行34-37) | ○ |
| C-11 | MailTemplateDefinition.getCollectionClass()はMailTemplateCollection::classを返却 | E-02 (行39-42) | ○ |
| C-12 | MailTemplateDefinition.since()は'6.0.0.0'を返却 | E-02 (行44-47) | ○ |

### MailTemplateCollection (UT-MLT-020〜UT-MLT-021)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-13 | MailTemplateCollection.getApiAlias()は'mail_template_collection'を返却 | E-03 (行14-17) | ○ |
| C-14 | MailTemplateCollection.getExpectedClass()はMailTemplateEntity::classを返却 | E-03 (行19-22) | ○ |

### MailTemplateTypes (UT-MLT-022〜UT-MLT-025)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-15 | MAILTYPE_NEWSLETTER = 'newsletter' | E-04 (行10) | ○ |
| C-16 | MAILTYPE_ORDER_CONFIRM = 'order_confirmation_mail' | E-04 (行24) | ○ |
| C-17 | MAILTYPE_PASSWORD_CHANGE = 'password_change' | E-04 (行26) | ○ |
| C-18 | MAILTYPE_CUSTOMER_REGISTER = 'customer_register' | E-04 (行44) | ○ |

### MailTemplateTypeEntity (UT-MLT-026〜UT-MLT-032)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-19 | MailTemplateTypeEntity.getName()はstringを返却 | E-07 (行18, 30-33) | ○ |
| C-20 | MailTemplateTypeEntity.getTechnicalName()はstringを返却 | E-07 (行20, 40-43) | ○ |
| C-21 | MailTemplateTypeEntity.getAvailableEntities()はnull許容配列 | E-07 (行22, 55-58) | ○ |
| C-22 | MailTemplateTypeEntity.getTranslations()はMailTemplateTypeTranslationCollectionを返却 | E-07 (行24, 50-53) | ○ |
| C-23 | MailTemplateTypeEntity.getMailTemplates()はMailTemplateCollectionを返却 | E-07 (行26, 70-73) | ○ |
| C-24 | MailTemplateTypeEntity.getTemplateData()はnull許容配列 | E-07 (行28, 80-83) | ○ |

### MailTemplateTypeDefinition (UT-MLT-033〜UT-MLT-034)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-25 | MailTemplateTypeDefinition.ENTITY_NAME = 'mail_template_type' | E-08 (行25) | ○ |
| C-26 | MailTemplateTypeDefinition.getTranslationDefinitionClass()はMailTemplateTypeTranslationDefinition::classを返却 | E-08 (行42-45) | ○ |

### MailHeaderFooterEntity (UT-MLT-036〜UT-MLT-043)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-27 | MailHeaderFooterEntity.getName()はnull許容 | E-10 (行16, 34-37) | ○ |
| C-28 | MailHeaderFooterEntity.getSystemDefault()はboolを返却 | E-10 (行18, 114-117) | ○ |
| C-29 | MailHeaderFooterEntity.getHeaderHtml()はnull許容 | E-10 (行24, 54-57) | ○ |
| C-30 | MailHeaderFooterEntity.getFooterHtml()はnull許容 | E-10 (行26, 74-77) | ○ |
| C-31 | MailHeaderFooterEntity.getSalesChannels()はSalesChannelCollectionを返却 | E-10 (行30, 94-97) | ○ |

### MailTemplateMediaEntity (UT-MLT-046〜UT-MLT-051)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-32 | MailTemplateMediaEntity.getMailTemplateId()はstringを返却 | E-13 (行16, 26-29) | ○ |
| C-33 | MailTemplateMediaEntity.getLanguageId()はnull許容 | E-13 (行18, 36-39) | ○ |
| C-34 | MailTemplateMediaEntity.getMediaId()はstringを返却 | E-13 (行20, 46-49) | ○ |
| C-35 | MailTemplateMediaEntity.getMedia()はMediaEntityを返却 | E-13 (行22, 56-59) | ○ |
| C-36 | MailTemplateMediaEntity.getMailTemplate()はMailTemplateEntityを返却 | E-13 (行24, 66-69) | ○ |

### MailTemplateMediaCollection (UT-MLT-052〜UT-MLT-058)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-37 | MailTemplateMediaCollection.getMailTemplateIds()は配列を返却 | E-15 (行18-21) | ○ |
| C-38 | MailTemplateMediaCollection.filterByMailTemplateId()はフィルタされたコレクションを返却 | E-15 (行23-26) | ○ |
| C-39 | MailTemplateMediaCollection.getMediaIds()は配列を返却 | E-15 (行31-34) | ○ |
| C-40 | MailTemplateMediaCollection.filterByMediaId()はフィルタされたコレクションを返却 | E-15 (行36-39) | ○ |
| C-41 | MailTemplateMediaCollection.getMedia()はMediaCollectionを返却 | E-15 (行41-45) | ○ |

### MailTemplateTranslationEntity (UT-MLT-059〜UT-MLT-065)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-42 | MailTemplateTranslationEntity.getMailTemplateId()はstringを返却 | E-16 (行15, 29-32) | ○ |
| C-43 | MailTemplateTranslationEntity.getSenderName()はnull許容 | E-16 (行17, 39-42) | ○ |
| C-44 | MailTemplateTranslationEntity.getSubject()はnull許容 | E-16 (行21, 59-62) | ○ |
| C-45 | MailTemplateTranslationEntity.getContentHtml()はnull許容 | E-16 (行23, 69-72) | ○ |
| C-46 | MailTemplateTranslationEntity.getContentPlain()はnull許容 | E-16 (行25, 79-82) | ○ |

### MailTemplateTranslationCollection (UT-MLT-066〜UT-MLT-069)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-47 | MailTemplateTranslationCollection.getMailTemplateIds()は配列を返却 | E-18 (行17-20) | ○ |
| C-48 | MailTemplateTranslationCollection.filterByMailTemplateId()はフィルタされたコレクションを返却 | E-18 (行22-25) | ○ |
| C-49 | MailTemplateTranslationCollection.getLanguageIds()は配列を返却 | E-18 (行30-33) | ○ |
| C-50 | MailTemplateTranslationCollection.filterByLanguageId()はフィルタされたコレクションを返却 | E-18 (行35-38) | ○ |

### MailTemplateTypeTranslationEntity (UT-MLT-070〜UT-MLT-072)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-51 | MailTemplateTypeTranslationEntity.getMailTemplateTypeId()はstringを返却 | E-19 (行15, 21-24) | ○ |
| C-52 | MailTemplateTypeTranslationEntity.getMailTemplateType()はnull許容 | E-19 (行17, 31-34) | ○ |
| C-53 | MailTemplateTypeTranslationEntity.getName()はnull許容 | E-19 (行19, 41-44) | ○ |

### MailHeaderFooterTranslationEntity (UT-MLT-077〜UT-MLT-084)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-54 | MailHeaderFooterTranslationEntity.getMailHeaderFooterId()はstringを返却 | E-22 (行26, 28-31) | ○ |
| C-55 | MailHeaderFooterTranslationEntity.getName()はnull許容 | E-22 (行12, 38-41) | ○ |
| C-56 | MailHeaderFooterTranslationEntity.getHeaderHtml()はnull許容 | E-22 (行16, 58-61) | ○ |
| C-57 | MailHeaderFooterTranslationEntity.getFooterHtml()はnull許容 | E-22 (行20, 78-81) | ○ |
| C-58 | MailHeaderFooterTranslationEntity.getMailHeaderFooter()はMailHeaderFooterEntityを返却 | E-22 (行24, 98-101) | ○ |

### MailTemplateException (UT-MLT-087〜UT-MLT-088)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-59 | MailTemplateException.invalidMailTemplateContent()はHTTP 400を返却 | E-06 (行15-20) | ○ |
| C-60 | MAIL_INVALID_TEMPLATE_CONTENT = 'CONTENT__INVALID_MAIL_TEMPLATE_CONTENT' | E-06 (行12) | ○ |

### MailTemplateRendererException (UT-MLT-089〜UT-MLT-091)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-61 | MailTemplateRendererException.getErrorCode()は'CONTENT__MAIL_TEMPLATING_FAILED'を返却 | E-31 (行20-23) | ○ |
| C-62 | MailTemplateRendererException.getStatusCode()は400を返却 | E-31 (行25-28) | ○ |

### MailEventConfigurationException (UT-MLT-092〜UT-MLT-094)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-63 | MailEventConfigurationException.getErrorCode()は'CONTENT__MAIL_INVALID_EVENT_CONFIGURATION'を返却 | E-32 (行24-27) | ○ |
| C-64 | MailEventConfigurationException.getStatusCode()は400を返却 | E-32 (行29-32) | ○ |

### MailActionController (UT-MLT-095〜UT-MLT-100)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-65 | MailActionController.send()はJsonResponseを返却 | E-25 (行41-64) | ○ |
| C-66 | MailActionController.validate()はHTTP 204を返却 | E-25 (行71-78) | ○ |
| C-67 | MailActionController.build()はcontentHtmlが文字列でない場合例外をスロー | E-25 (行91-93) | ○ |

### MailSendSubscriberConfig (UT-MLT-101〜UT-MLT-108)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-68 | MailSendSubscriberConfig.skip()はboolを返却 | E-26 (行34-37) | ○ |
| C-69 | MailSendSubscriberConfig.getDocumentIds()は配列を返却 | E-26 (行47-50) | ○ |
| C-70 | MailSendSubscriberConfig.getMediaIds()は配列を返却 | E-26 (行55-58) | ○ |

### MailSentEvent (UT-MLT-109〜UT-MLT-116)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-71 | MailSentEvent.EVENT_NAME = 'mail.sent' | E-27 (行20) | ○ |
| C-72 | MailSentEvent.getSubject()はstringを返却 | E-27 (行65-68) | ○ |
| C-73 | MailSentEvent.getRecipients()は配列を返却 | E-27 (行80-84) | ○ |
| C-74 | MailSentEvent.getLogLevel()はLevel::Infoを返却 | E-27 (行96-99) | ○ |

### MailBeforeSentEvent (UT-MLT-117〜UT-MLT-123)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-75 | MailBeforeSentEvent.EVENT_NAME = 'mail.after.create.message' | E-28 (行23) | ○ |
| C-76 | MailBeforeSentEvent.getData()は配列を返却 | E-28 (行59-62) | ○ |
| C-77 | MailBeforeSentEvent.getMessage()はEmailを返却 | E-28 (行64-67) | ○ |
| C-78 | MailBeforeSentEvent.getLogData()はbinAttachmentsを除外 | E-28 (行74-84) | ○ |

### MailBeforeValidateEvent (UT-MLT-124〜UT-MLT-131)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-79 | MailBeforeValidateEvent.EVENT_NAME = 'mail.before.send' | E-29 (行20) | ○ |
| C-80 | MailBeforeValidateEvent.setData()はデータを設定 | E-29 (行66-69) | ○ |
| C-81 | MailBeforeValidateEvent.addData()はキーと値を追加 | E-29 (行75-78) | ○ |
| C-82 | MailBeforeValidateEvent.setTemplateData()はテンプレートデータを設定 | E-29 (行96-99) | ○ |
| C-83 | MailBeforeValidateEvent.addTemplateData()はキーと値を追加 | E-29 (行104-107) | ○ |

### MailErrorEvent (UT-MLT-132〜UT-MLT-142)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-84 | MailErrorEvent.NAME = 'mail.sent.error' | E-30 (行19) | ○ |
| C-85 | MailErrorEvent.getThrowable()はnull許容 | E-30 (行29, 45-48) | ○ |
| C-86 | MailErrorEvent.getLogLevel()はデフォルトでLevel::Debug | E-30 (行28, 34) | ○ |
| C-87 | MailErrorEvent.getLogData()は例外情報を含む | E-30 (行65-90) | ○ |

### MailTemplateEvents (UT-MLT-143〜UT-MLT-145)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-88 | MAIL_TEMPLATE_WRITTEN_EVENT = 'mail_template.written' | E-05 (行10) | ○ |
| C-89 | MAIL_TEMPLATE_DELETED_EVENT = 'mail_template.deleted' | E-05 (行12) | ○ |
| C-90 | MAIL_HEADER_FOOTER_WRITTEN_EVENT = 'mail_header_footer.written' | E-05 (行58) | ○ |

## 4) 不足情報（Unknown / Missing）
- なし（全てのテストケースはソースコードから直接根拠を確認済み）

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全てのテストケースはソースコードの直接分析に基づいている
- **1: 中リスク** - MailActionControllerのテストはAbstractMailServiceとStringTemplateRendererのモック実装が必要
- **1: 中リスク** - イベントクラスのFlowEventAware実装はFlow機能との統合テストで追加確認が推奨される

## 6) レビュアーチェックリスト（最小）
- [ ] Entity/Definitionクラスのgetter/setterテストケースが全プロパティをカバーしているか
- [ ] Collectionクラスのフィルタメソッドが境界値（空コレクション、該当なし）を含んでいるか
- [ ] Exceptionクラスのエラーコードとステータスコードが正しく定義されているか
- [ ] MailActionControllerのAPIエンドポイントテストが認可（ACL）を考慮しているか
- [ ] イベントクラスのgetValues()がFlowMailVariablesのキーと一致しているか
- [ ] MailTemplateTypesの定数が実際のデータベースマイグレーションと整合しているか
- [ ] 翻訳関連エンティティが多言語対応の要件を満たしているか
