---
generated_at: 2026-02-25 15:30:00
metrics:
  claims_total: 40
  claims_with_evidence: 38
  claims_without_evidence: 2
confidence_derived: 0.95
---

# 根拠レポート：decap-cms-widget-boolean 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：38 / 40、根拠なし：2
- 優先レビュー（高）
  1. **C-05（UT-BOL-005）**：opts=nullを渡した場合の...nullスプレッド演算子の挙動はJavaScript言語仕様に依存し、ソースコード上には明示的ガードがない
  2. **C-22（UT-BOL-022）**：Toggleクリック時のonChange呼び出しはToggleコンポーネント（外部パッケージ decap-cms-ui-default）の内部実装に依存

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

- E-01: `packages/decap-cms-widget-boolean/src/index.js` L3-L9 - Widget関数定義（ファクトリ関数、デフォルト引数 opts={}、スプレッド演算子 ...opts）
- E-02: `packages/decap-cms-widget-boolean/src/index.js` L11 - DecapCmsWidgetBoolean 名前付きエクスポート定義（{ Widget, controlComponent }）
- E-03: `packages/decap-cms-widget-boolean/src/index.js` L12 - DecapCmsWidgetBoolean デフォルトエクスポート
- E-04: `packages/decap-cms-widget-boolean/src/BooleanControl.js` L7-L16 - BooleanBackground関数コンポーネント（isActiveによる三項演算子での背景色切り替え）
- E-05: `packages/decap-cms-widget-boolean/src/BooleanControl.js` L18-L35 - BooleanControlクラスコンポーネント（render メソッド、props のデストラクチャリング、Toggle への props 受け渡し）
- E-06: `packages/decap-cms-widget-boolean/src/BooleanControl.js` L37-L45 - BooleanControl.propTypes定義（field, onChange, classNameWrapper, setActiveStyle, setInactiveStyle が isRequired）
- E-07: `packages/decap-cms-widget-boolean/src/BooleanControl.js` L47-L49 - BooleanControl.defaultProps定義（value: false）
- E-08: `packages/decap-cms-widget-boolean/package.json` - パッケージ定義・依存関係（react, prop-types, emotion, decap-cms-ui-default 等）
- E-09: `packages/decap-cms-ui-default/src/Toggle.js` L47-L82 - Toggleコンポーネント実装（handleToggle内でonChange(!isActive)呼び出し、onFocus/onBlur/Background props）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Widget関数がデフォルト引数で{ name: 'boolean', controlComponent }を返す | E-01 | ○ |
| C-02 | optsでプロパティを追加できる（スプレッド演算子 ...opts） | E-01 | ○ |
| C-03 | optsでnameを上書きできる（...optsがname定義の後に展開されるため） | E-01 | ○ |
| C-04 | 返却オブジェクトのcontrolComponentがBooleanControlと厳密等価 | E-01, E-05 | ○ |
| C-05 | opts=nullの場合に...nullが空として展開されエラーにならない | **根拠不足** | △ |
| C-06 | opts=undefinedの場合にデフォルト引数{}が使用される | E-01 | ○ |
| C-07 | opts={}の場合にデフォルトのオブジェクトが返る | E-01 | ○ |
| C-08 | 返却値のnameプロパティが文字列'boolean' | E-01 | ○ |
| C-09 | DecapCmsWidgetBooleanにWidget関数が含まれる | E-02 | ○ |
| C-10 | DecapCmsWidgetBooleanにcontrolComponentが含まれる | E-02 | ○ |
| C-11 | デフォルトエクスポートがDecapCmsWidgetBooleanと同一 | E-03 | ○ |
| C-12 | isActive=trueでcolors.activeが背景色に適用される | E-04 | ○ |
| C-13 | isActive=falseでcolors.textFieldBorderが背景色に適用される | E-04 | ○ |
| C-14 | 追加propsがToggleBackgroundに透過される（...props） | E-04 | ○ |
| C-15 | isActive=undefinedの場合はfalsyとしてcolors.textFieldBorderになる | E-04 | ○ |
| C-16 | isActive=nullの場合はfalsyとしてcolors.textFieldBorderになる | E-04 | ○ |
| C-17 | value=trueでToggleのactive=true | E-05 | ○ |
| C-18 | value=falseでToggleのactive=false | E-05 | ○ |
| C-19 | forIDがToggleのid属性に渡される | E-05 | ○ |
| C-20 | classNameWrapperがdivのclassNameに適用される | E-05 | ○ |
| C-21 | onChangeがToggleのonChange propに渡される | E-05 | ○ |
| C-22 | Toggleクリック時にonChangeが反転値で呼び出される | **根拠不足** | △ |
| C-23 | setActiveStyleがToggleのonFocus propに渡される | E-05 | ○ |
| C-24 | setInactiveStyleがToggleのonBlur propに渡される | E-05 | ○ |
| C-25 | BooleanBackgroundがToggleのBackground propとして渡される | E-05 | ○ |
| C-26 | Toggleフォーカス時にsetActiveStyleが呼ばれる | E-05, E-09 | ○ |
| C-27 | Toggleブラー時にsetInactiveStyleが呼ばれる | E-05, E-09 | ○ |
| C-28 | value未指定の場合にdefaultPropsでfalseが使用される | E-07 | ○ |
| C-29 | value=nullでエラーなく描画される | E-05, E-07 | ○ |
| C-30 | forID=undefinedでエラーなく描画される | E-06 | ○ |
| C-31 | 必須propsが全て指定された場合にPropTypes警告が出ない | E-06 | ○ |
| C-32 | field未指定でPropTypes警告が出る | E-06 | ○ |
| C-33 | onChange未指定でPropTypes警告が出る | E-06 | ○ |
| C-34 | classNameWrapper未指定でPropTypes警告が出る | E-06 | ○ |
| C-35 | setActiveStyle未指定でPropTypes警告が出る | E-06 | ○ |
| C-36 | setInactiveStyle未指定でPropTypes警告が出る | E-06 | ○ |
| C-37 | value='true'（文字列）でPropTypes型警告が出る | E-06 | ○ |
| C-38 | スナップショットテスト（value=true） | E-05 | ○ |
| C-39 | スナップショットテスト（value=false） | E-05 | ○ |
| C-40 | ラッパーdiv要素がレンダリングされる | E-05 | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-05（UT-BOL-005）**: `Widget(null)` を実行した場合、デフォルト引数 `opts = {}` は `undefined` のみに適用されるため、`null` は明示的引数として渡される。`...null` はJavaScript仕様（ES2018+）では空オブジェクトとして展開されエラーにならないが、ソースコード上にこの挙動への明示的なガードやコメントはない。実行時テストでの確認が推奨される。
  - 候補：ECMAScript仕様書（SpreadElement） / Babelトランスパイル結果 / 実際のテスト実行結果
- **C-22（UT-BOL-022）**: Toggleコンポーネントのクリック時にonChange propが反転値で呼ばれるかは、BooleanControl.jsのソースコードだけでは断定できない。Toggle.js（E-09）のhandleToggle関数でonChange(!isActive)が呼ばれることは確認済みだが、これはdecap-cms-widget-booleanモジュール外のコードであり、単体テストではToggleをモック化する可能性がある。
  - 候補：decap-cms-ui-defaultのToggle.jsソースコード（参照済み: E-09） / Toggleの単体テスト / 統合テスト

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - モジュール全体が小規模（2ソースファイル、約60行）であり、複雑なビジネスロジックを含まない
- 0: 低リスク - Widget関数はファクトリパターンでシンプルなオブジェクト生成のみを行う
- 1: 中リスク - BooleanControlはToggleコンポーネント（decap-cms-ui-default）に依存しており、単体テストではモック化戦略の検討が必要
- 0: 低リスク - PropTypesの検証は開発モード（NODE_ENV !== 'production'）でのみ動作し、プロダクション環境では無効化される
- 0: 低リスク - BooleanBackground関数コンポーネントは三項演算子による単純な色切り替えのみ

## 6) レビュアーチェックリスト（最小）
- [ ] Widget関数のデフォルト引数（opts={}）とスプレッド演算子（...opts）の動作が正しくテストされているか
- [ ] BooleanControlの全props（value, forID, onChange, classNameWrapper, setActiveStyle, setInactiveStyle）がToggleコンポーネントに正しく渡されるテストケースが網羅されているか
- [ ] defaultProps（value: false）の動作確認テストが含まれているか（UT-BOL-028）
- [ ] PropTypesの必須prop（field, onChange, classNameWrapper, setActiveStyle, setInactiveStyle）の各欠落テストが個別に含まれているか
- [ ] BooleanBackgroundのisActiveによる色分岐（colors.active / colors.textFieldBorder）が両方テストされているか（UT-BOL-012, UT-BOL-013）
- [ ] decap-cms-ui-defaultのToggleコンポーネントのモック戦略が明確か（単体テストとしてToggleをモックするか、shallowレンダリングを使用するか）
- [ ] UT-BOL-005のopts=null挙動はJavaScript仕様に基づく推測であり、実行確認が必要か検討
