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

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

## 本レポートについて

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

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

1. **根拠の有無確認**：各テストケースに対して、ソースコード内のメソッド・プロパティが実際に存在するか
2. **根拠との整合性**：テストケースの内容がソースコードの実装と矛盾していないか
3. **網羅性**：主要なクラス・メソッドを適切にカバーしているか

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：195 / 195、根拠なし：0
- 優先レビュー（高）
  1. **SalesChannelContext の認証関連メソッド（ensureLoggedIn, getToken）**：セキュリティに直結
  2. **SalesChannelContextPersister のセッション管理メソッド**：データ整合性に影響
  3. **SalesChannelValidator の言語バリデーション**：データ整合性チェック

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `src/Core/System/SalesChannel/SalesChannelEntity.php` - 販売チャネルエンティティ定義（975行）
- E-02: `src/Core/System/SalesChannel/SalesChannelDefinition.php` - 販売チャネルDAL定義（187行）
- E-03: `src/Core/System/SalesChannel/SalesChannelContext.php` - 販売チャネルコンテキスト（490行）
- E-04: `src/Core/System/SalesChannel/SalesChannelCollection.php` - 販売チャネルコレクション（126行）
- E-05: `src/Core/System/SalesChannel/SalesChannelException.php` - 例外クラス（311行）
- E-06: `src/Core/System/SalesChannel/Aggregate/SalesChannelDomain/SalesChannelDomainEntity.php` - ドメインエンティティ（178行）
- E-07: `src/Core/System/SalesChannel/Aggregate/SalesChannelDomain/SalesChannelDomainCollection.php` - ドメインコレクション（24行）
- E-08: `src/Core/System/SalesChannel/Aggregate/SalesChannelType/SalesChannelTypeEntity.php` - タイプエンティティ（155行）
- E-09: `src/Core/System/SalesChannel/Aggregate/SalesChannelType/SalesChannelTypeCollection.php` - タイプコレクション（32行）
- E-10: `src/Core/System/SalesChannel/Aggregate/SalesChannelAnalytics/SalesChannelAnalyticsEntity.php` - アナリティクスエンティティ（87行）
- E-11: `src/Core/System/SalesChannel/Context/SalesChannelContextService.php` - コンテキストサービス（160行）
- E-12: `src/Core/System/SalesChannel/Context/SalesChannelContextPersister.php` - コンテキスト永続化（209行）
- E-13: `src/Core/System/SalesChannel/Context/SalesChannelContextFactory.php` - コンテキストファクトリ（304行）
- E-14: `src/Core/System/SalesChannel/Context/SalesChannelContextRestorer.php` - コンテキスト復元（224行）
- E-15: `src/Core/System/SalesChannel/Context/CartRestorer.php` - カート復元（221行）
- E-16: `src/Core/System/SalesChannel/Validation/SalesChannelValidator.php` - バリデータ（349行）
- E-17: `src/Core/System/SalesChannel/Entity/SalesChannelRepository.php` - リポジトリ（261行）
- E-18: `src/Core/System/SalesChannel/Api/StructEncoder.php` - 構造体エンコーダ（389行）
- E-19: `src/Core/System/SalesChannel/StoreApiResponse.php` - Store APIレスポンス（35行）
- E-20: `src/Core/System/SalesChannel/BaseSalesChannelContext.php` - 基本コンテキスト（123行）

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

### SalesChannelEntity（UT-SCH-001 〜 UT-SCH-020）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | getLanguageId メソッドが存在し言語IDを返す | E-01 (L232-235) | ○ |
| C-02 | getCurrencyId メソッドが存在し通貨IDを返す | E-01 (L242-245) | ○ |
| C-03 | getPaymentMethodId メソッドが存在し支払方法IDを返す | E-01 (L252-255) | ○ |
| C-04 | getActive メソッドが存在しbool値を返す | E-01 (L348-351) | ○ |
| C-05 | isMaintenance メソッドが存在しbool値を返す | E-01 (L358-361) | ○ |
| C-06 | getMaintenanceIpWhitelist メソッドが存在しnullableな配列を返す | E-01 (L369-373) | ○ |
| C-07 | getTaxCalculationType メソッドが存在し文字列を返す | E-01 (L876-879) | ○ |
| C-08 | getNavigationCategoryDepth メソッドが存在しint値を返す | E-01 (L816-819) | ○ |
| C-09 | isHreflangActive メソッドが存在しbool値を返す | E-01 (L826-829) | ○ |
| C-10 | getHomeEnabled メソッドが存在しbool値を返す | E-01 (L590-593) | ○ |
| C-11 | getDomains メソッドが存在しnullableなコレクションを返す | E-01 (L514-517) | ○ |
| C-12 | getLanguages メソッドが存在しnullableなコレクションを返す | E-01 (L322-325) | ○ |
| C-13 | getCurrencies メソッドが存在しnullableなコレクションを返す | E-01 (L312-315) | ○ |
| C-14 | getPaymentMethods メソッドが存在しnullableなコレクションを返す | E-01 (L494-497) | ○ |
| C-15 | getShippingMethods メソッドが存在しnullableなコレクションを返す | E-01 (L504-507) | ○ |
| C-16 | getCountries メソッドが存在しnullableなコレクションを返す | E-01 (L474-477) | ○ |

### SalesChannelCollection（UT-SCH-021 〜 UT-SCH-038）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-17 | getLanguageIds メソッドが存在し配列を返す | E-04 (L20-23) | ○ |
| C-18 | filterByLanguageId メソッドが存在しコレクションを返す | E-04 (L25-28) | ○ |
| C-19 | getCurrencyIds メソッドが存在し配列を返す | E-04 (L33-36) | ○ |
| C-20 | filterByCurrencyId メソッドが存在しコレクションを返す | E-04 (L38-41) | ○ |
| C-21 | getPaymentMethodIds メソッドが存在し配列を返す | E-04 (L46-49) | ○ |
| C-22 | filterByPaymentMethodId メソッドが存在しコレクションを返す | E-04 (L51-54) | ○ |
| C-23 | getShippingMethodIds メソッドが存在し配列を返す | E-04 (L59-62) | ○ |
| C-24 | filterByShippingMethodId メソッドが存在しコレクションを返す | E-04 (L64-67) | ○ |
| C-25 | getCountryIds メソッドが存在し配列を返す | E-04 (L72-75) | ○ |
| C-26 | filterByCountryId メソッドが存在しコレクションを返す | E-04 (L77-80) | ○ |
| C-27 | getTypeIds メソッドが存在し配列を返す | E-04 (L85-88) | ○ |
| C-28 | filterByTypeId メソッドが存在しコレクションを返す | E-04 (L90-93) | ○ |
| C-29 | getLanguages メソッドが存在しLanguageCollectionを返す | E-04 (L95-100) | ○ |
| C-30 | getCurrencies メソッドが存在しCurrencyCollectionを返す | E-04 (L102-107) | ○ |
| C-31 | getTypes メソッドが存在しSalesChannelTypeCollectionを返す | E-04 (L109-114) | ○ |
| C-32 | getApiAlias が sales_channel_collection を返す | E-04 (L116-119) | ○ |

### SalesChannelContext（UT-SCH-039 〜 UT-SCH-102）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-33 | getCurrentCustomerGroup メソッドが存在 | E-03 (L79-82) | ○ |
| C-34 | getCurrency メソッドが存在 | E-03 (L84-87) | ○ |
| C-35 | getSalesChannel メソッドが存在 | E-03 (L89-92) | ○ |
| C-36 | getTaxRules メソッドが存在 | E-03 (L94-97) | ○ |
| C-37 | buildTaxRules メソッドが存在し例外をスローする可能性あり | E-03 (L103-124) | ○ |
| C-38 | getCustomer メソッドが存在しnullableを返す | E-03 (L126-129) | ○ |
| C-39 | getPaymentMethod メソッドが存在 | E-03 (L131-134) | ○ |
| C-40 | getShippingMethod メソッドが存在 | E-03 (L136-139) | ○ |
| C-41 | getShippingLocation メソッドが存在 | E-03 (L141-144) | ○ |
| C-42 | getContext メソッドが存在 | E-03 (L146-149) | ○ |
| C-43 | getRuleIds, setRuleIds メソッドが存在 | E-03 (L154-165) | ○ |
| C-44 | getAreaRuleIds, getRuleIdsByAreas, setAreaRuleIds メソッドが存在 | E-03 (L172-207) | ○ |
| C-45 | lockRules, lockPermissions メソッドが存在 | E-03 (L209-217) | ○ |
| C-46 | getToken メソッドが存在しTwigコンテキスト内で例外 | E-03 (L219-231) | ○ |
| C-47 | getTaxState, setTaxState メソッドが存在 | E-03 (L233-241) | ○ |
| C-48 | getTaxCalculationType メソッドが存在 | E-03 (L243-246) | ○ |
| C-49 | getPermissions, setPermissions メソッドが存在 | E-03 (L251-266) | ○ |
| C-50 | hasPermission メソッドが存在 | E-03 (L273-276) | ○ |
| C-51 | getSalesChannelId メソッドが存在 | E-03 (L278-281) | ○ |
| C-52 | addState, removeState, hasState, getStates メソッドが存在 | E-03 (L283-304) | ○ |
| C-53 | getDomainId, setDomainId メソッドが存在 | E-03 (L311-319) | ○ |
| C-54 | getLanguageIdChain, getLanguageId メソッドが存在 | E-03 (L324-332) | ○ |
| C-55 | getVersionId, considerInheritance メソッドが存在 | E-03 (L334-342) | ○ |
| C-56 | getTotalRounding, setTotalRounding メソッドが存在 | E-03 (L344-352) | ○ |
| C-57 | getItemRounding, setItemRounding メソッドが存在 | E-03 (L354-362) | ○ |
| C-58 | getCurrencyId メソッドが存在 | E-03 (L364-367) | ○ |
| C-59 | ensureLoggedIn メソッドが存在し例外をスローする可能性あり | E-03 (L369-378) | ○ |
| C-60 | getCustomerId メソッドが存在しnullableを返す | E-03 (L380-383) | ○ |
| C-61 | getImitatingUserId, setImitatingUserId メソッドが存在 | E-03 (L385-393) | ○ |
| C-62 | live メソッドが存在 | E-03 (L401-413) | ○ |
| C-63 | withPermissions メソッドが存在 | E-03 (L426-442) | ○ |
| C-64 | getCountryId, getCustomerGroupId メソッドが存在 | E-03 (L444-452) | ○ |
| C-65 | getLanguageInfo, setLanguageInfo メソッドが存在 | E-03 (L454-462) | ○ |
| C-66 | getMeasurementSystem, setMeasurementSystem メソッドが存在 | E-03 (L464-472) | ○ |

### SalesChannelDefinition（UT-SCH-103 〜 UT-SCH-106）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-67 | getEntityName が sales_channel を返す | E-02 (L72-75) | ○ |
| C-68 | getCollectionClass が SalesChannelCollection::class を返す | E-02 (L77-80) | ○ |
| C-69 | getEntityClass が SalesChannelEntity::class を返す | E-02 (L82-85) | ○ |
| C-70 | getDefaults がデフォルト値を返す | E-02 (L87-93) | ○ |

### SalesChannelDomainEntity（UT-SCH-107 〜 UT-SCH-114）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-71 | getUrl メソッドが存在 | E-06 (L48-51) | ○ |
| C-72 | getSalesChannelId メソッドが存在 | E-06 (L58-61) | ○ |
| C-73 | getLanguageId メソッドが存在 | E-06 (L68-71) | ○ |
| C-74 | getCurrencyId メソッドが存在しnullable | E-06 (L98-101) | ○ |
| C-75 | getSnippetSetId メソッドが存在しnullable | E-06 (L118-121) | ○ |
| C-76 | isHreflangUseOnlyLocale メソッドが存在 | E-06 (L148-151) | ○ |

### SalesChannelTypeEntity（UT-SCH-115 〜 UT-SCH-125）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-77 | getName メソッドが存在 | E-08 (L39-42) | ○ |
| C-78 | getManufacturer メソッドが存在 | E-08 (L49-52) | ○ |
| C-79 | getDescription メソッドが存在 | E-08 (L59-62) | ○ |
| C-80 | getCoverUrl メソッドが存在（null時は空文字列） | E-08 (L82-89) | ○ |
| C-81 | getIconName メソッドが存在（null時は空文字列） | E-08 (L99-106) | ○ |
| C-82 | getScreenshotUrls メソッドが存在（null時は空配列） | E-08 (L118-125) | ○ |

### SalesChannelAnalyticsEntity（UT-SCH-126 〜 UT-SCH-130）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-83 | getTrackingId メソッドが存在 | E-10 (L27-30) | ○ |
| C-84 | isActive メソッドが存在 | E-10 (L37-40) | ○ |
| C-85 | isTrackOrders メソッドが存在 | E-10 (L47-50) | ○ |
| C-86 | isAnonymizeIp メソッドが存在 | E-10 (L57-60) | ○ |
| C-87 | isTrackOffcanvasCart メソッドが存在 | E-10 (L67-70) | ○ |

### Context Services（UT-SCH-131 〜 UT-SCH-157）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-88 | SalesChannelContextService::get メソッドが存在 | E-11 (L75-158) | ○ |
| C-89 | SalesChannelContextPersister::save メソッドが存在 | E-12 (L36-58) | ○ |
| C-90 | SalesChannelContextPersister::delete メソッドが存在 | E-12 (L60-68) | ○ |
| C-91 | SalesChannelContextPersister::replace メソッドが存在 | E-12 (L70-104) | ○ |
| C-92 | SalesChannelContextPersister::load メソッドが存在 | E-12 (L109-159) | ○ |
| C-93 | SalesChannelContextPersister::revokeAllCustomerTokens メソッドが存在 | E-12 (L161-188) | ○ |
| C-94 | SalesChannelContextFactory::create メソッドが存在 | E-13 (L64-147) | ○ |
| C-95 | SalesChannelContextRestorer::restoreByOrder メソッドが存在 | E-14 (L48-127) | ○ |
| C-96 | SalesChannelContextRestorer::restoreByCustomer メソッドが存在 | E-14 (L134-173) | ○ |
| C-97 | CartRestorer::restore メソッドが存在 | E-15 (L68-89) | ○ |
| C-98 | CartRestorer::restoreByToken メソッドが存在 | E-15 (L44-61) | ○ |

### Validation（UT-SCH-158 〜 UT-SCH-162）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-99 | SalesChannelValidator::handleSalesChannelLanguageIds メソッドが存在 | E-16 (L57-71) | ○ |
| C-100 | INSERT時のデフォルト言語検証ロジックが存在 | E-16 (L188-199) | ○ |
| C-101 | 重複エントリ検証ロジックが存在 | E-16 (L225-232) | ○ |
| C-102 | DELETE時のデフォルト言語保護ロジックが存在 | E-16 (L213-220) | ○ |
| C-103 | UPDATE時の言語リスト整合性検証ロジックが存在 | E-16 (L201-208) | ○ |

### SalesChannelRepository（UT-SCH-163 〜 UT-SCH-166）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-104 | search メソッドが存在 | E-17 (L54-61) | ○ |
| C-105 | aggregate メソッドが存在 | E-17 (L63-70) | ○ |
| C-106 | searchIds メソッドが存在 | E-17 (L72-79) | ○ |

### StructEncoder（UT-SCH-167 〜 UT-SCH-172）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-107 | encode メソッドが存在 | E-18 (L52-61) | ○ |
| C-108 | reset メソッドが存在 | E-18 (L43-47) | ○ |

### SalesChannelException（UT-SCH-173 〜 UT-SCH-190）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-109 | salesChannelNotFound メソッドが存在 | E-05 (L44-52) | ○ |
| C-110 | currencyNotFound メソッドが存在 | E-05 (L54-62) | ○ |
| C-111 | countryNotFound メソッドが存在 | E-05 (L79-87) | ○ |
| C-112 | countryStateNotFound メソッドが存在 | E-05 (L64-72) | ○ |
| C-113 | noContextData メソッドが存在 | E-05 (L106-114) | ○ |
| C-114 | invalidLanguageId メソッドが存在 | E-05 (L116-123) | ○ |
| C-115 | languageNotFound メソッドが存在 | E-05 (L125-133) | ○ |
| C-116 | providedLanguageNotAvailable メソッドが存在 | E-05 (L138-145) | ○ |
| C-117 | invalidType メソッドが存在 | E-05 (L176-183) | ○ |
| C-118 | invalidCurrencyId メソッドが存在 | E-05 (L185-192) | ○ |
| C-119 | invalidCountryId メソッドが存在 | E-05 (L194-201) | ○ |
| C-120 | invalidCountryStateId メソッドが存在 | E-05 (L203-210) | ○ |
| C-121 | contextPermissionsLocked メソッドが存在 | E-05 (L217-224) | ○ |
| C-122 | taxNotFound メソッドが存在 | E-05 (L226-234) | ○ |
| C-123 | customerGroupNotFound メソッドが存在 | E-05 (L236-244) | ○ |
| C-124 | shippingMethodNotFound メソッドが存在 | E-05 (L246-254) | ○ |
| C-125 | encodingInvalidStructException メソッドが存在 | E-05 (L256-263) | ○ |
| C-126 | contextTokenNotAccessible メソッドが存在 | E-05 (L265-272) | ○ |

### StoreApiResponse / BaseSalesChannelContext（UT-SCH-191 〜 UT-SCH-195）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-127 | StoreApiResponse::getObject メソッドが存在 | E-19 (L30-33) | ○ |
| C-128 | BaseSalesChannelContext の各メソッドが存在 | E-20 (L43-121) | ○ |

## 4) 不足情報（Unknown / Missing）
- 全てのテストケースにソースコード根拠があり、不足情報はありません。

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**: 全テストケースにソースコード根拠あり
- 注意点：
  - SalesChannelContext::getToken はTwigレンダリングコンテキスト内でのアクセスを禁止するセキュリティ保護が実装されている（L226-228）
  - SalesChannelContextPersister の有効期限管理（lifetimeInterval）がセッションセキュリティに影響
  - SalesChannelValidator の言語バリデーションはデータ整合性に直結

## 6) レビュアーチェックリスト（最小）
- [x] 全テストケースがソースコードに対応している
- [x] SalesChannelContext の認証関連メソッド（ensureLoggedIn）のテストケースが網羅されている
- [x] SalesChannelException の各例外生成メソッドがテストされている
- [x] SalesChannelValidator のバリデーションロジックがテストされている
- [ ] 実際のテスト実装時に、モックの設定が適切か確認する
- [ ] 境界値テストの入力値が実際の仕様に合致しているか確認する
