---
generated_at: 2026-03-01 20:50:00
metrics:
  claims_total: 40
  claims_with_evidence: 40
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：email-resend 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：40 / 40、根拠なし：0
- 優先レビュー（高）
  - 全テストケースがソースコードに基づいており、根拠不足はありません
  - 既存テストファイル（email-resend.spec.ts）で2件のテストが実装済みであり、それらと整合性があります

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

- E-01: `packages/email-resend/src/index.ts` - メインソースファイル（resendAdapter関数、mapPayloadEmailToResendEmail関数、mapFromAddress関数、mapAddresses関数、mapAttachments関数、型定義）
- E-02: `packages/email-resend/src/email-resend.spec.ts` - 既存テストファイル（sendEmail正常系・異常系の2件のテスト実装）
- E-03: `packages/email-resend/package.json` - パッケージ定義ファイル（依存関係、エクスポート設定）

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

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | resendAdapterで有効な引数でアダプターが生成できる | E-01 (L24-65: resendAdapter関数定義) | ○ |
| C-02 | アダプターがname='resend-rest'を返す | E-01 (L28) | ○ |
| C-03 | アダプターがdefaultFromAddressを保持する | E-01 (L29) | ○ |
| C-04 | アダプターがdefaultFromNameを保持する | E-01 (L30) | ○ |
| C-05 | sendEmailが成功時にidを含むレスポンスを返す | E-01 (L50-51), E-02 (L21-56) | ○ |
| C-06 | 正しいURL（https://api.resend.com/emails）にPOSTリクエストが送信される | E-01 (L39), E-02 (L46) | ○ |
| C-07 | AuthorizationヘッダーにBearerトークンが設定される | E-01 (L42), E-02 (L49) | ○ |
| C-08 | Content-Typeヘッダーがapplication/jsonに設定される | E-01 (L43) | ○ |
| C-09 | APIエラー時にAPIErrorがスローされる | E-01 (L52-60), E-02 (L58-88) | ○ |
| C-10 | レスポンスにstatusCodeがない場合res.statusが使用される | E-01 (L53: data.statusCode \|\| res.status) | ○ |
| C-11 | レスポンスにnameとmessageがない場合の簡潔なエラーメッセージ | E-01 (L55-57: if (data.name && data.message)条件) | ○ |
| C-12 | mapPayloadEmailToResendEmailがPayloadオプションをResend形式に変換する | E-01 (L67-88) | ○ |
| C-13 | subjectがundefinedの場合空文字列に変換される | E-01 (L75: message.subject ?? '') | ○ |
| C-14 | bcc/cc/replyToが正しくマッピングされる | E-01 (L79-81) | ○ |
| C-15 | html/textがtoString()で文字列変換される | E-01 (L85-86) | ○ |
| C-16 | html/textがundefinedの場合空文字列になる | E-01 (L85-86: \|\| '' ) | ○ |
| C-17 | mapFromAddressでaddressがundefinedの場合デフォルト値が使用される | E-01 (L95-97) | ○ |
| C-18 | mapFromAddressで文字列アドレスがそのまま返却される | E-01 (L99-101) | ○ |
| C-19 | mapFromAddressでオブジェクト形式が「名前 <アドレス>」形式に変換される | E-01 (L103) | ○ |
| C-20 | mapAddressesでaddressesがundefinedの場合空文字列が返却される | E-01 (L107-109) | ○ |
| C-21 | mapAddressesで文字列アドレスがそのまま返却される | E-01 (L111-113) | ○ |
| C-22 | mapAddressesで文字列配列がそのまま返却される | E-01 (L115-117) | ○ |
| C-23 | mapAddressesでオブジェクト配列からaddressプロパティが抽出される | E-01 (L116) | ○ |
| C-24 | mapAddressesで混合配列が正しく処理される | E-01 (L116: typeof address === 'string' ? address : address.address) | ○ |
| C-25 | mapAddressesで単一オブジェクトが配列に変換される | E-01 (L119) | ○ |
| C-26 | mapAttachmentsでattachmentsがundefinedの場合空配列が返却される | E-01 (L125-127) | ○ |
| C-27 | mapAttachmentsで空配列がそのまま返却される | E-01 (L129: map処理) | ○ |
| C-28 | mapAttachmentsで文字列コンテンツがBufferに変換される | E-01 (L134-138) | ○ |
| C-29 | mapAttachmentsでBufferコンテンツがそのまま返却される | E-01 (L141-145) | ○ |
| C-30 | mapAttachmentsでfilenameがない場合APIErrorがスローされる | E-01 (L130-131) | ○ |
| C-31 | mapAttachmentsでcontentがない場合APIErrorがスローされる | E-01 (L130-131) | ○ |
| C-32 | mapAttachmentsでcontentが文字列/Buffer以外の場合APIErrorがスローされる | E-01 (L148) | ○ |
| C-33 | 複数の添付ファイルが正しく処理される | E-01 (L129: attachments.map) | ○ |
| C-34 | to/cc/bccに複数アドレスを指定できる | E-01 (L76-80, L115-117) | ○ |
| C-35 | HTMLメールが正しく送信される | E-01 (L85) | ○ |
| C-36 | テキストメールが正しく送信される | E-01 (L86) | ○ |
| C-37 | 添付ファイル付きメールが正しく送信される | E-01 (L84) | ○ |
| C-38 | replyToが正しく設定される | E-01 (L81) | ○ |
| C-39 | fromが指定されない場合デフォルト送信元が使用される | E-01 (L74, L95-97) | ○ |
| C-40 | ネットワークエラー時にfetch由来の例外がスローされる | E-01 (L39-46: fetchは例外をスローする可能性がある) | ○ |

## 4) 不足情報（Unknown / Missing）
- 現時点で根拠不足のテストケースはありません
- 全テストケースがソースコード（E-01）の実装に直接対応しています
- 既存テストファイル（E-02）では2件のテスト（正常系・異常系）のみ実装されていますが、本テストケース一覧ではより網羅的なカバレッジを目指しています

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全テストケースがソースコードに直接対応しており、既存のテスト実装も参考にしています

**注意点:**
- 実際のResend APIとの統合テストは本単体テストケースの範囲外です
- fetchのモック化が必要なため、実際のネットワーク通信は発生しません
- mapPayloadEmailToResendEmail、mapFromAddress、mapAddresses、mapAttachmentsはプライベート関数（export されていない）のため、直接テストするにはモジュール構造の変更またはsendEmail経由での間接テストが必要です

## 6) レビュアーチェックリスト（最小）
- [ ] プライベート関数（mapPayloadEmailToResendEmail等）のテスト方針が適切か（直接テストするか、sendEmail経由で間接テストするか）
- [ ] mapAttachmentsの型検証テストケース（C-32）が、TypeScriptの型システムでは捕捉されない実行時エラーを正しくカバーしているか
- [ ] エラーメッセージのフォーマット（C-09, C-10, C-11）が要件と合致しているか
- [ ] 境界値テスト（空配列、undefined等）の網羅性が十分か
- [ ] 既存テスト（E-02）で検証済みのケースと新規テストケースの整合性が取れているか
- [ ] ネットワークエラーテスト（C-40）のモック実装方針が適切か
