- 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>
80 lines
2.2 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|