Files
honeyDueAPI/internal/worker/enqueuer_test.go
Trey T bec880886b Coverage priorities 1-5: test pure functions, extract interfaces, mock-based handler tests
- Priority 1: Test NewSendEmailTask + NewSendPushTask (5 tests)
- Priority 2: Test customHTTPErrorHandler — all 15+ branches (21 tests)
- Priority 3: Extract Enqueuer interface + payload builders in worker pkg (5 tests)
- Priority 4: Extract ClassifyFile/ComputeRelPath in migrate-encrypt (6 tests)
- Priority 5: Define Handler interfaces, refactor to accept them, mock-based tests (14 tests)
- Fix .gitignore: /worker instead of worker to stop ignoring internal/worker/

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 20:30:09 -05:00

80 lines
2.2 KiB
Go

package worker
import (
"encoding/json"
"testing"
)
func TestBuildWelcomeEmailPayload_RoundTrip(t *testing.T) {
data, err := BuildWelcomeEmailPayload("a@b.com", "Alice", "CODE123")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
var p WelcomeEmailPayload
if err := json.Unmarshal(data, &p); err != nil {
t.Fatalf("unmarshal: %v", err)
}
if p.To != "a@b.com" || p.FirstName != "Alice" || p.ConfirmationCode != "CODE123" {
t.Errorf("got %+v", p)
}
}
func TestBuildVerificationEmailPayload_RoundTrip(t *testing.T) {
data, err := BuildVerificationEmailPayload("b@c.com", "Bob", "VERIFY456")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
var p VerificationEmailPayload
if err := json.Unmarshal(data, &p); err != nil {
t.Fatalf("unmarshal: %v", err)
}
if p.To != "b@c.com" || p.FirstName != "Bob" || p.Code != "VERIFY456" {
t.Errorf("got %+v", p)
}
}
func TestBuildPasswordResetEmailPayload_RoundTrip(t *testing.T) {
data, err := BuildPasswordResetEmailPayload("c@d.com", "Carol", "RST789", "token-abc")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
var p PasswordResetEmailPayload
if err := json.Unmarshal(data, &p); err != nil {
t.Fatalf("unmarshal: %v", err)
}
if p.To != "c@d.com" || p.FirstName != "Carol" || p.Code != "RST789" || p.ResetToken != "token-abc" {
t.Errorf("got %+v", p)
}
}
func TestBuildPasswordChangedEmailPayload_RoundTrip(t *testing.T) {
data, err := BuildPasswordChangedEmailPayload("d@e.com", "Dave")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
var p EmailPayload
if err := json.Unmarshal(data, &p); err != nil {
t.Fatalf("unmarshal: %v", err)
}
if p.To != "d@e.com" || p.FirstName != "Dave" {
t.Errorf("got %+v", p)
}
}
func TestBuildWelcomeEmailPayload_Fields(t *testing.T) {
data, err := BuildWelcomeEmailPayload("test@example.com", "Test", "ABC")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
// Verify raw JSON contains expected keys
var raw map[string]interface{}
if err := json.Unmarshal(data, &raw); err != nil {
t.Fatalf("unmarshal: %v", err)
}
for _, key := range []string{"to", "first_name", "confirmation_code"} {
if _, ok := raw[key]; !ok {
t.Errorf("missing key %q in payload JSON", key)
}
}
}