# gist-cache-rs 機能検証テスト設計書（テストセット4：プレビュー機能検証）

## テスト目的

gist-cache-rsのプレビュー機能（`-p`/`--preview`）が正しく動作することを確認する。

## テスト対象機能

- Auto検索でのプレビュー表示
- ID直接指定でのプレビュー表示
- ファイル名検索でのプレビュー表示
- キャッシュありでのプレビュー表示
- --previewオプション（ロングオプション）の動作

## 前提条件

- gist-cache-rsがインストール済み
- GitHub CLIが認証済み
- メタデータキャッシュが最新（`gist-cache-rs update`実行済み）
- テスト用のhello_args系Gistが存在する

## テストケース一覧

### TC1: Auto検索でのプレビュー（-pオプション）

**目的**: キーワード検索でプレビューが正しく表示されることを確認

**前提条件**:

- 「hello」で検索すると複数のGistがヒットする

**手順**:

1. `-p`オプション付きで検索: `gist-cache-rs run -p hello bash`
2. 複数候補から1つを選択（例: 番号7）
3. 表示内容を確認

**期待結果**:

- 複数のGistが番号付きリストで表示される
- 番号選択後、以下が表示される:
  - Description（説明文）
  - Files（ファイル名）
  - `=== Gist内容 ===` セクション
  - `--- ファイル名 ---` ヘッダー
  - ファイルの内容（ソースコード）
- スクリプトは実行されない（バージョン情報や引数表示なし）

**検証項目**:

- プレビューモードが正しく起動する
- Gist内容が正しく表示される
- 実行されずに終了する

---

### TC2: ID直接指定でのプレビュー

**目的**: ID指定時のプレビューが正しく表示されることを確認

**前提条件**:

- hello_args.sh のGist ID（7bcb324e9291fa350334df8efb7f0deb）が分かっている

**手順**:

1. ID指定でプレビュー: `gist-cache-rs run -p --id 7bcb324e9291fa350334df8efb7f0deb bash`
2. 表示内容を確認

**期待結果**:

- 「ID指定モード」のメッセージが表示される
- 検索プロセスがスキップされる
- Description、Files、Gist内容が表示される
- スクリプトは実行されない

**検証項目**:

- ID直接指定とプレビューモードの併用が動作する
- 選択UIがスキップされる
- 内容が正しく表示される

---

### TC3: ファイル名指定でのプレビュー

**目的**: ファイル名検索時のプレビューが正しく表示されることを確認

**前提条件**:

- hello_args.py が存在する

**手順**:

1. ファイル名指定でプレビュー: `gist-cache-rs run -p --filename hello_args.py python3`
2. 表示内容を確認

**期待結果**:

- hello_args.py を含むGistが検索される
- 単一結果の場合は直接プレビュー表示
- 複数結果の場合は選択UI表示
- Gist内容が正しく表示される
- スクリプトは実行されない

**検証項目**:

- ファイル名検索とプレビューモードの併用が動作する
- 内容が正しく表示される

---

### TC4: キャッシュありでのプレビュー

**目的**: コンテンツキャッシュが存在する場合のプレビュー動作を確認

**前提条件**:

- hello_args.sh が既にキャッシュされている（過去に実行済み）

**手順**:

1. キャッシュ確認: `ls ~/.cache/gist-cache/contents/7bcb324e9291fa350334df8efb7f0deb/`
2. プレビュー実行: `gist-cache-rs run -p --id 7bcb324e9291fa350334df8efb7f0deb bash`
3. 表示内容を確認

**期待結果**:

- 「情報: キャッシュが存在しないため...」のメッセージは表示されない
- キャッシュから高速に内容を読み込む
- Gist内容が正しく表示される
- スクリプトは実行されない

**検証項目**:

- キャッシュからのプレビュー表示が動作する
- ネットワークアクセスが発生しない（既にキャッシュがある場合）

---

### TC5: --previewオプション（ロングオプション）

**目的**: ロングオプション `--preview` が正しく動作することを確認

**前提条件**:

- hello_args.rb が存在する

**手順**:

1. `--preview`オプション付きで検索: `gist-cache-rs run --preview --filename hello_args.rb ruby`
2. 表示内容を確認

**期待結果**:

- `-p` と同じ動作をする
- Gist内容が正しく表示される
- スクリプトは実行されない

**検証項目**:

- ロングオプション `--preview` が動作する
- `-p` との動作の一貫性

---

## テスト実行順序

1. TC1: Auto検索でのプレビュー（対話的テスト）
2. TC2: ID直接指定でのプレビュー
3. TC3: ファイル名指定でのプレビュー
4. TC4: キャッシュありでのプレビュー
5. TC5: --previewオプション（ロングオプション）

## 注意事項

- TC1は対話的な入力が必要
- プレビューモードではスクリプトは実行されない
- キャッシュの有無によりメッセージが異なる
- TC4はTC2の後に実行することでキャッシュが作成される
- プレビュー表示では引数（bash, python3など）は使用されない（表示のみ）
