- 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>
48 lines
1.5 KiB
Go
48 lines
1.5 KiB
Go
package database
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestClassifyCompletion_CompletedAfterDue(t *testing.T) {
|
|
dueDate := time.Date(2025, 6, 1, 0, 0, 0, 0, time.UTC)
|
|
completedAt := time.Date(2025, 6, 5, 14, 30, 0, 0, time.UTC) // 4 days after due
|
|
|
|
result := classifyCompletion(completedAt, dueDate, 30)
|
|
|
|
assert.Equal(t, "overdue_tasks", result)
|
|
}
|
|
|
|
func TestClassifyCompletion_CompletedOnDueDate(t *testing.T) {
|
|
dueDate := time.Date(2025, 6, 15, 0, 0, 0, 0, time.UTC)
|
|
completedAt := time.Date(2025, 6, 15, 10, 0, 0, 0, time.UTC) // same day
|
|
|
|
result := classifyCompletion(completedAt, dueDate, 30)
|
|
|
|
// Completed on the due date: daysBefore == 0, which is <= threshold → due_soon_tasks
|
|
assert.Equal(t, "due_soon_tasks", result)
|
|
}
|
|
|
|
func TestClassifyCompletion_CompletedWithinThreshold(t *testing.T) {
|
|
dueDate := time.Date(2025, 7, 1, 0, 0, 0, 0, time.UTC)
|
|
completedAt := time.Date(2025, 6, 10, 8, 0, 0, 0, time.UTC) // 21 days before due
|
|
|
|
result := classifyCompletion(completedAt, dueDate, 30)
|
|
|
|
// 21 days before due, within 30-day threshold → due_soon_tasks
|
|
assert.Equal(t, "due_soon_tasks", result)
|
|
}
|
|
|
|
func TestClassifyCompletion_CompletedBeyondThreshold(t *testing.T) {
|
|
dueDate := time.Date(2025, 9, 1, 0, 0, 0, 0, time.UTC)
|
|
completedAt := time.Date(2025, 6, 1, 12, 0, 0, 0, time.UTC) // 92 days before due
|
|
|
|
result := classifyCompletion(completedAt, dueDate, 30)
|
|
|
|
// 92 days before due, beyond 30-day threshold → upcoming_tasks
|
|
assert.Equal(t, "upcoming_tasks", result)
|
|
}
|