xtablo-source/backend/internal/jobs/heartbeat_test.go
Arthur Belleville a1c2828dc4
feat(06-01): implement internal/jobs package with workers and error handler
- HeartbeatArgs + HeartbeatWorker (logs slog.Info on each tick)
- OrphanCleanupArgs + OrphanCleanupWorker (S3 delete then DB delete loop)
- NewOrphanCleanupWorker constructor with pool + FileStorer injection
- SlogErrorHandler implementing river.ErrorHandler (HandleError + HandlePanic)
- fileQuerier interface for test injection without real DB
- Unit tests: 7 tests pass (pure mock-based, no DB required)
- go build ./... exits 0
2026-05-15 16:34:08 +02:00

29 lines
624 B
Go

package jobs
import (
"context"
"testing"
"github.com/riverqueue/river"
"github.com/riverqueue/river/rivertype"
)
func TestHeartbeatWorker(t *testing.T) {
w := &HeartbeatWorker{}
job := &river.Job[HeartbeatArgs]{
JobRow: &rivertype.JobRow{
ID: 42,
Attempt: 1,
},
Args: HeartbeatArgs{},
}
if err := w.Work(context.Background(), job); err != nil {
t.Fatalf("HeartbeatWorker.Work returned unexpected error: %v", err)
}
}
func TestHeartbeatArgs_Kind(t *testing.T) {
if got := (HeartbeatArgs{}).Kind(); got != "heartbeat" {
t.Errorf("HeartbeatArgs.Kind() = %q, want %q", got, "heartbeat")
}
}