task1-2_step1_red-phase.md•4.63 kB
# Task 1-2 Step 1: Red Phase - Todoist API Client のテスト先行実装
## 🔴 Red Phase: テストを先に実装して失敗させる
### 【重要】このステップでは実装コードを一切書かない
- テストコードのみを実装する
- テストが失敗することを確認する
- 実装は次のステップ(Green Phase)で行う
## 前提条件
- Task 1-1(MCPプロトコル基盤)が完了していること
- packages/mcp-server プロジェクトが存在すること
## 実装指示
### 1. 追加依存関係のインストール
- `axios` - HTTP クライアント
- `@types/axios` - TypeScript 型定義(開発依存関係)
- `nock` - HTTP モッキング(テスト用、開発依存関係)
### 2. テストファイル作成
#### test/todoist-client.test.ts
**TodoistClient クラスの単体テスト(15個のテストケース)**
**コンストラクタのテスト:**
- API トークンありでの初期化
- API トークンなしでのエラー
- ベースURLの設定確認
**getTasks メソッドのテスト:**
- 正常なタスク一覧取得
- フィルター付きタスク取得(project_id指定)
- APIエラー時の例外処理(401 Unauthorized)
- ネットワークエラー時の例外処理
- 空のレスポンスの処理
**createTask メソッドのテスト:**
- 正常なタスク作成(content のみ)
- プロジェクト指定でのタスク作成
- 期限付きタスク作成
- 必須パラメータ欠如時のエラー
- API エラー時の例外処理
**updateTask メソッドのテスト:**
- 正常なタスク更新
- 存在しないタスクIDでのエラー処理
**deleteTask メソッドのテスト:**
- 正常なタスク削除
- 存在しないタスクIDでのエラー処理
**getProjects メソッドのテスト:**
- 正常なプロジェクト一覧取得
- APIエラー時の例外処理
#### test/todoist-client.integration.test.ts
**TodoistClient の統合テスト(8個のテストケース)**
**実際のAPI呼び出しテスト(モック使用):**
- Tasks API の完全なワークフロー(作成 → 取得 → 更新 → 削除)
- Projects API の取得処理
- 複数タスクの一括操作
- エラーリカバリの動作確認
- レート制限の適切な処理
- タイムアウト処理の確認
- リトライ機構の動作確認
- 認証失敗時の適切なエラーハンドリング
### 3. モックデータの準備
#### test/fixtures/todoist-responses.ts
**テスト用のモックレスポンスデータ定義**
- タスク一覧のサンプルレスポンス
- タスク作成のサンプルレスポンス
- プロジェクト一覧のサンプルレスポンス
- エラーレスポンスのサンプル
## 実行確認の指示
### テスト実行(失敗することを確認)
`npm test` を実行して以下を確認:
- ❌ すべてのテストが失敗する
- ❌ `Cannot find module '../src/adapters/todoist-client'` エラー
- ❌ モジュールが見つからないエラーが出る
### 期待される失敗パターン
- モジュールインポートエラー
- クラス定義が見つからないエラー
- メソッドが定義されていないエラー
## 完了条件
### ✅ チェックリスト
- [ ] 追加依存関係がインストールされている(axios, nock, @types/axios)
- [ ] TodoistClient の単体テスト(15個)が実装されている
- [ ] TodoistClient の統合テスト(8個)が実装されている
- [ ] モックデータファイル(fixtures)が作成されている
- [ ] `npm test` でテストが実行され、すべて失敗することを確認
- [ ] モジュールが見つからないエラーが出ることを確認
## テスト設計のポイント
### テストケースの網羅性
- 正常系・異常系の両方をカバー
- 境界値テストの実装
- エラーハンドリングの詳細確認
### モックの活用
- nock を使用した HTTP リクエストのモック
- 実際のTodoist APIレスポンス形式の再現
- エラーパターンの網羅的なテスト
### 統合テストの重要性
- 実際のAPIワークフローの検証
- タスクのライフサイクル全体のテスト
- エラーリカバリとリトライ機構の確認
## 【重要】次のステップ
このRed Phaseが完了したら、**Green Phase(task1-2_step2_green-phase.md)** に進み、テストを通すための最小実装を行う。
**絶対に実装コードを書かないこと** - それは次のステップです!