# Issue #03.1: テストフィクスチャ準備

**Phase:** 2a（前提条件）
**優先度:** 最高（ブロッカー）
**依存関係:** なし
**見積もり:** 0.25日

---

## 概要

Phase2 の TDD を開始する前に、テスト用 YAML フィクスチャと pytest フィクスチャを準備する。
この Issue が完了するまで、他の Issue の Red Phase を開始しないこと。

---

## 背景

TDD の Red Phase では「テストが失敗すること」を確認する必要がある。
フィクスチャが存在しない状態でテストを実行すると、ImportError や FileNotFoundError になり、
本来の「機能が未実装」という理由での失敗ではなくなってしまう。

---

## 完了条件

### YAML フィクスチャ（作成済み ✓）

以下のファイルが `tests/fixtures/transition_graphs/` に存在すること：

- [x] `simple_20250125000000.yml` - 最小構成（1ノード、2終了）
- [x] `branching_20250125000000.yml` - 分岐テスト（5ノード、3分岐→合流）
- [x] `top2_20250125000000.yml` - 事例1完全版（8ノード、4終了）

### conftest.py フィクスチャ（追加必要）

`tests/conftest.py` に以下のフィクスチャを追加すること：

```python
# 追加するフィクスチャ
from pathlib import Path
import pytest

FIXTURES_DIR = Path(__file__).parent / "fixtures" / "transition_graphs"


@pytest.fixture
def simple_yaml() -> Path:
    """最小構成YAML（1ノード、2終了）"""
    return FIXTURES_DIR / "simple_20250125000000.yml"


@pytest.fixture
def branching_yaml() -> Path:
    """分岐テストYAML（5ノード、3分岐→合流）"""
    return FIXTURES_DIR / "branching_20250125000000.yml"


@pytest.fixture
def top2_yaml() -> Path:
    """事例1完全版YAML（8ノード、4終了）"""
    return FIXTURES_DIR / "top2_20250125000000.yml"


@pytest.fixture
def invalid_yaml_missing_start(tmp_path) -> Path:
    """開始ノードが未定義のYAML（バリデータエラーテスト用）"""
    content = '''
version: "1.0"
entrypoint: invalid
description: ""
nodes:
  a:
    module: nodes.a
    function: func_a
    description: ""
exits: {}
start: nonexistent
transitions: {}
'''
    yaml_path = tmp_path / "invalid_start.yml"
    yaml_path.write_text(content)
    return yaml_path


@pytest.fixture
def invalid_yaml_orphan_node(tmp_path) -> Path:
    """到達不能ノードを含むYAML（バリデータ警告テスト用）"""
    content = '''
version: "1.0"
entrypoint: orphan
description: ""
nodes:
  a:
    module: nodes.a
    function: func_a
    description: ""
  orphan:
    module: nodes.orphan
    function: orphan_func
    description: "到達不能ノード"
exits:
  done:
    code: 0
    description: ""
start: a
transitions:
  a:
    success::done: exit::done
'''
    yaml_path = tmp_path / "orphan.yml"
    yaml_path.write_text(content)
    return yaml_path


@pytest.fixture
def invalid_yaml_cycle(tmp_path) -> Path:
    """循環参照を含むYAML（バリデータエラーテスト用）"""
    content = '''
version: "1.0"
entrypoint: cycle
description: ""
nodes:
  a:
    module: nodes.a
    function: func_a
    description: ""
  b:
    module: nodes.b
    function: func_b
    description: ""
exits:
  done:
    code: 0
    description: ""
start: a
transitions:
  a:
    success::done: b
  b:
    success::done: a  # 循環！終了への到達不能
'''
    yaml_path = tmp_path / "cycle.yml"
    yaml_path.write_text(content)
    return yaml_path
```

### 確認テスト

```bash
# フィクスチャが認識されることを確認
pytest tests/conftest.py --collect-only

# 期待される出力：
# <Function simple_yaml>
# <Function branching_yaml>
# <Function top2_yaml>
# <Function invalid_yaml_missing_start>
# <Function invalid_yaml_orphan_node>
# <Function invalid_yaml_cycle>
```

---

## 実装手順

1. `tests/conftest.py` に上記のフィクスチャを追加
2. `pytest tests/conftest.py --collect-only` でフィクスチャが認識されることを確認
3. 既存のテスト（`pytest tests/`）が引き続き通過することを確認

---

## 次のIssue

- #04: TransitionGraph データ型定義（この Issue 完了後に開始可能）
