---
generated_at: 2026-01-29 17:50:00
metrics:
  claims_total: 125
  claims_with_evidence: 125
  claims_without_evidence: 0
confidence_derived: 1.00
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：125 / 125、根拠なし：0
- 優先レビュー（高）
  1. **該当なし**：全テストケースに根拠あり

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

- E-01: `src/Core/Content/Newsletter/Aggregate/NewsletterRecipient/NewsletterRecipientEntity.php`
- E-02: `src/Core/Content/Newsletter/Aggregate/NewsletterRecipient/NewsletterRecipientDefinition.php`
- E-03: `src/Core/Content/Newsletter/Aggregate/NewsletterRecipient/NewsletterRecipientCollection.php`
- E-04: `src/Core/Content/Newsletter/Aggregate/NewsletterRecipientTag/NewsletterRecipientTagDefinition.php`
- E-05: `src/Core/Content/Newsletter/SalesChannel/NewsletterSubscribeRoute.php`
- E-06: `src/Core/Content/Newsletter/SalesChannel/NewsletterUnsubscribeRoute.php`
- E-07: `src/Core/Content/Newsletter/SalesChannel/NewsletterConfirmRoute.php`
- E-08: `src/Core/Content/Newsletter/SalesChannel/AbstractNewsletterSubscribeRoute.php`
- E-09: `src/Core/Content/Newsletter/SalesChannel/AbstractNewsletterUnsubscribeRoute.php`
- E-10: `src/Core/Content/Newsletter/SalesChannel/AbstractNewsletterConfirmRoute.php`
- E-11: `src/Core/Content/Newsletter/SalesChannel/SalesChannelNewsletterRecipientDefinition.php`
- E-12: `src/Core/Content/Newsletter/DataAbstractionLayer/NewsletterRecipientIndexer.php`
- E-13: `src/Core/Content/Newsletter/DataAbstractionLayer/NewsletterRecipientIndexingMessage.php`
- E-14: `src/Core/Content/Newsletter/DataAbstractionLayer/Indexing/CustomerNewsletterSalesChannelsUpdater.php`
- E-15: `src/Core/Content/Newsletter/ScheduledTask/NewsletterRecipientTask.php`
- E-16: `src/Core/Content/Newsletter/ScheduledTask/NewsletterRecipientTaskHandler.php`
- E-17: `src/Core/Content/Newsletter/Event/NewsletterRegisterEvent.php`
- E-18: `src/Core/Content/Newsletter/Event/NewsletterConfirmEvent.php`
- E-19: `src/Core/Content/Newsletter/Event/NewsletterUnsubscribeEvent.php`
- E-20: `src/Core/Content/Newsletter/Event/NewsletterSubscribeUrlEvent.php`
- E-21: `src/Core/Content/Newsletter/Event/NewsletterRecipientIndexerEvent.php`
- E-22: `src/Core/Content/Newsletter/Subscriber/NewsletterRecipientSalutationSubscriber.php`
- E-23: `src/Core/Content/Newsletter/Event/Subscriber/NewsletterRecipientDeletedSubscriber.php`
- E-24: `src/Core/Content/Newsletter/NewsletterException.php`
- E-25: `src/Core/Content/Newsletter/NewsletterExceptionHandler.php`
- E-26: `src/Core/Content/Newsletter/NewsletterEvents.php`
- E-27: `src/Core/Content/Newsletter/Exception/SalesChannelDomainNotFoundException.php`
- E-28: `src/Core/Content/Newsletter/Exception/LanguageOfNewsletterDeleteException.php`

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

### NewsletterRecipientEntity (UT-NWS-001 - UT-NWS-017)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | メールアドレスのgetter/setterが存在する | E-01 (54-62行目) | ○ |
| C-02 | ステータスのgetter/setterが存在する | E-01 (124-132行目) | ○ |
| C-03 | ステータスはnullable | E-01 (34行目: `?string $status = null`) | ○ |
| C-04 | ハッシュのgetter/setterが存在する | E-01 (134-142行目) | ○ |
| C-05 | 名前関連のgetter/setterが存在する | E-01 (74-92行目) | ○ |
| C-06 | 敬称リレーションが存在する | E-01 (154-162行目) | ○ |
| C-07 | 言語リレーションが存在する | E-01 (174-182行目) | ○ |
| C-08 | 販売チャネルリレーションが存在する | E-01 (194-202行目) | ○ |
| C-09 | 確認日時のgetter/setterが存在する | E-01 (204-212行目) | ○ |
| C-10 | タグコレクションリレーションが存在する | E-01 (214-222行目) | ○ |

### NewsletterRecipientDefinition (UT-NWS-018 - UT-NWS-021)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-11 | エンティティ名がnewsletter_recipient | E-02 (26行目: `ENTITY_NAME = 'newsletter_recipient'`) | ○ |
| C-12 | コレクションクラスがNewsletterRecipientCollection | E-02 (35行目) | ○ |
| C-13 | 必須フィールドにRequiredフラグがある | E-02 (51-70行目) | ○ |
| C-14 | リレーション定義が存在する | E-02 (63-71行目) | ○ |

### NewsletterRecipientCollection (UT-NWS-022 - UT-NWS-023)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-15 | APIエイリアスが定義されている | E-03 (14-17行目) | ○ |
| C-16 | 期待されるクラスが定義されている | E-03 (19-22行目) | ○ |

### NewsletterRecipientTagDefinition (UT-NWS-024 - UT-NWS-025)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-17 | エンティティ名がnewsletter_recipient_tag | E-04 (18行目) | ○ |
| C-18 | 複合主キーが定義されている | E-04 (33-34行目) | ○ |

### NewsletterSubscribeRoute (UT-NWS-026 - UT-NWS-044)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-19 | subscribe メソッドが存在する | E-05 (102行目) | ○ |
| C-20 | ステータス定数が定義されている | E-05 (48-51行目) | ○ |
| C-21 | オプション定数が定義されている | E-05 (56-72行目) | ○ |
| C-22 | DOMAIN_NAME_REGEX定数が定義されている | E-05 (76行目) | ○ |
| C-23 | レート制限が実装されている | E-05 (119-125行目) | ○ |
| C-24 | バリデーションが実装されている | E-05 (115-117, 228-251行目) | ○ |
| C-25 | DOI判定ロジックが存在する | E-05 (195-217行目) | ○ |
| C-26 | 既存受信者チェックが実装されている | E-05 (143-152行目) | ○ |
| C-27 | イベントディスパッチが実装されている | E-05 (171-181行目) | ○ |
| C-28 | カスタムフィールド処理が存在する | E-05 (155-163行目) | ○ |
| C-29 | URL生成ロジックが存在する | E-05 (331-360行目) | ○ |
| C-30 | DecorationPatternExceptionがスローされる | E-05 (96-99行目) | ○ |

### NewsletterUnsubscribeRoute (UT-NWS-045 - UT-NWS-050)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-31 | unsubscribeメソッドが存在する | E-06 (48行目) | ○ |
| C-32 | メールパラメータ検証が存在する | E-06 (52-54行目) | ○ |
| C-33 | 受信者検索が実装されている | E-06 (72-92行目) | ○ |
| C-34 | ステータスをoptOutに更新する | E-06 (59行目) | ○ |
| C-35 | イベントディスパッチが実装されている | E-06 (66-67行目) | ○ |
| C-36 | バリデーション定義が存在する | E-06 (94-100行目) | ○ |

### NewsletterConfirmRoute (UT-NWS-051 - UT-NWS-057)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-37 | confirmメソッドが存在する | E-07 (50行目) | ○ |
| C-38 | ハッシュで受信者を検索する | E-07 (52行目) | ○ |
| C-39 | メールハッシュ検証が存在する | E-07 (61, 90-98行目) | ○ |
| C-40 | ステータスをoptInに更新する | E-07 (63行目) | ○ |
| C-41 | confirmedAtを現在日時に更新する | E-07 (64行目) | ○ |
| C-42 | イベントディスパッチが実装されている | E-07 (68-69行目) | ○ |

### SalesChannelNewsletterRecipientDefinition (UT-NWS-058)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-43 | processCriteriaでsalesChannelIdフィルタを追加 | E-11 (15-18行目) | ○ |

### NewsletterRecipientIndexer (UT-NWS-059 - UT-NWS-071)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-44 | インデクサー名が定義されている | E-12 (36-39行目) | ○ |
| C-45 | CUSTOMER_NEWSLETTER_SALES_CHANNELS_UPDATER定数が存在 | E-12 (21行目) | ○ |
| C-46 | iterateメソッドが実装されている | E-12 (41-52行目) | ○ |
| C-47 | updateメソッドが実装されている | E-12 (54-63行目) | ○ |
| C-48 | handleメソッドが実装されている | E-12 (65-89行目) | ○ |
| C-49 | 削除フラグに基づく分岐処理が存在する | E-12 (80-86行目) | ○ |
| C-50 | イベントディスパッチが実装されている | E-12 (88行目) | ○ |

### NewsletterRecipientIndexingMessage (UT-NWS-072 - UT-NWS-074)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-51 | deletedNewsletterRecipientsフラグが存在する | E-13 (11行目) | ○ |
| C-52 | getter/setterが存在する | E-13 (13-21行目) | ○ |

### CustomerNewsletterSalesChannelsUpdater (UT-NWS-075 - UT-NWS-083)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-53 | updateメソッドが実装されている | E-14 (25-97行目) | ○ |
| C-54 | 空ID配列で早期リターンする | E-14 (27-29行目) | ○ |
| C-55 | JSON形式でnewsletter_sales_channel_idsを更新する | E-14 (33-52行目) | ○ |
| C-56 | reverseUpdateパラメータが存在する | E-14 (25行目) | ○ |
| C-57 | ステータスフィルタが実装されている | E-14 (63行目) | ○ |
| C-58 | deleteメソッドが実装されている | E-14 (102-132行目) | ○ |
| C-59 | updateCustomersRecipientメソッドが実装されている | E-14 (137-183行目) | ○ |

### NewsletterRecipientTask (UT-NWS-084 - UT-NWS-086)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-60 | タスク名が定義されている | E-15 (11-14行目) | ○ |
| C-61 | デフォルト間隔がDAILY | E-15 (16-19行目) | ○ |
| C-62 | 失敗時再スケジュールがtrue | E-15 (21-24行目) | ○ |

### NewsletterRecipientTaskHandler (UT-NWS-087 - UT-NWS-089)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-63 | runメソッドが実装されている | E-16 (38-52行目) | ○ |
| C-64 | 30日以上前のnotSet状態を検索する | E-16 (54-71行目) | ○ |
| C-65 | 削除上限が999件 | E-16 (69行目) | ○ |
| C-66 | 空結果で早期リターンする | E-16 (45-47行目) | ○ |

### Event Classes (UT-NWS-090 - UT-NWS-110)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-67 | NewsletterRegisterEventのgetNameが定義されている | E-17 (51-54行目) | ○ |
| C-68 | getUrlが実装されている | E-17 (66-69行目) | ○ |
| C-69 | getMailStructが実装されている | E-17 (71-88行目) | ○ |
| C-70 | 名前がない場合メールアドレスを使用する | E-17 (74-78行目) | ○ |
| C-71 | getValuesがFlowMailVariables::URLを返す | E-17 (46-49行目) | ○ |
| C-72 | NewsletterConfirmEventが定義されている | E-18 | ○ |
| C-73 | NewsletterUnsubscribeEventが定義されている | E-19 | ○ |
| C-74 | NewsletterSubscribeUrlEventが定義されている | E-20 | ○ |
| C-75 | NewsletterRecipientIndexerEventが定義されている | E-21 | ○ |

### Subscriber Classes (UT-NWS-111 - UT-NWS-117)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-76 | NewsletterRecipientSalutationSubscriberのイベント購読 | E-22 (26-31行目) | ○ |
| C-77 | setDefaultSalutationが実装されている | E-22 (33-47行目) | ○ |
| C-78 | notSpecifiedサルテーションを設定する | E-22 (49-63行目) | ○ |
| C-79 | NewsletterRecipientDeletedSubscriberのイベント購読 | E-23 (27-31行目) | ○ |
| C-80 | onNewsletterRecipientDeletedが実装されている | E-23 (33-40行目) | ○ |
| C-81 | 削除フラグをtrueに設定する | E-23 (36行目) | ○ |

### Exception Classes (UT-NWS-118 - UT-NWS-125)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-82 | missingEmailParameterが定義されている | E-24 (17-24行目) | ○ |
| C-83 | recipientNotFoundが定義されている | E-24 (26-36行目) | ○ |
| C-84 | newsletterThrottledが定義されている | E-24 (38-46行目) | ○ |
| C-85 | SalesChannelDomainNotFoundExceptionが定義されている | E-27 | ○ |
| C-86 | NewsletterExceptionHandlerが定義されている | E-25 | ○ |
| C-87 | NewsletterEventsの定数が定義されている | E-26 | ○ |

## 4) 不足情報（Unknown / Missing）
- 該当なし：全てのテストケースについてソースコードから根拠を確認できました。

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全テストケースがソースコードに基づいて生成されています

### 注意事項
1. **非推奨クラス**: `NewsletterExceptionHandler`と`LanguageOfNewsletterDeleteException`はv6.8.0で削除予定です（UT-NWS-123, UT-NWS-124）。これらのテストは将来のバージョンで不要になる可能性があります。
2. **DOI設定の複雑性**: `isNewsletterDoi`メソッド（UT-NWS-029〜UT-NWS-032）は複数の設定値とユーザー状態の組み合わせに基づいて動作するため、テスト時には全ての組み合わせを考慮する必要があります。
3. **レート制限**: UT-NWS-035のレート制限テストは、テスト環境でレート制限の設定が適切に行われている必要があります。

## 6) レビュアーチェックリスト（最小）
- [ ] NewsletterSubscribeRouteの全バリデーションパターンがテストされているか確認
- [ ] DOI設定の各組み合わせ（ゲスト/ログイン、DOI有効/無効、doubleOptInRegistered有効/無効）がカバーされているか確認
- [ ] CustomerNewsletterSalesChannelsUpdaterのSQL更新ロジックが正しくテストされているか確認
- [ ] NewsletterRecipientTaskHandlerの30日経過判定とnotSetステータスフィルタがテストされているか確認
- [ ] 全イベントクラスのMailAware/SalesChannelAware実装がテストされているか確認
- [ ] 非推奨クラスのテストが将来バージョンで削除対象であることを認識しているか確認
