fetch_ml/tests/unit/worker/test_helpers.go
Jeremie Fraeys a775513037
refactor: Fix test_helpers.go package to worker_test
- Changed package from worker to worker_test to match other test files
- Updated all type references to use worker.* prefix
- Fixed Worker field access to use exported fields (ID, Config, etc.)

Build status: Compiles successfully
2026-02-17 16:57:21 -05:00

67 lines
1.7 KiB
Go

// Package worker_test provides test helpers for the worker package
package worker_test
import (
"context"
"log/slog"
"github.com/jfraeys/fetch_ml/internal/jupyter"
"github.com/jfraeys/fetch_ml/internal/logging"
"github.com/jfraeys/fetch_ml/internal/metrics"
"github.com/jfraeys/fetch_ml/internal/queue"
"github.com/jfraeys/fetch_ml/internal/worker"
"github.com/jfraeys/fetch_ml/internal/worker/lifecycle"
)
// NewTestWorker creates a minimal Worker for testing purposes.
// It initializes only the fields needed for unit tests.
func NewTestWorker(cfg *worker.Config) *worker.Worker {
if cfg == nil {
cfg = &worker.Config{}
}
logger := logging.NewLogger(slog.LevelInfo, false)
metricsObj := &metrics.Metrics{}
return &worker.Worker{
ID: "test-worker",
Config: cfg,
Logger: logger,
Metrics: metricsObj,
Health: lifecycle.NewHealthMonitor(),
}
}
// NewTestWorkerWithQueue creates a test Worker with a queue client.
func NewTestWorkerWithQueue(cfg *worker.Config, queueClient queue.Backend) *worker.Worker {
w := NewTestWorker(cfg)
_ = queueClient
return w
}
// NewTestWorkerWithJupyter creates a test Worker with Jupyter manager.
func NewTestWorkerWithJupyter(cfg *worker.Config, jupyterMgr *jupyter.ServiceManager) *worker.Worker {
w := NewTestWorker(cfg)
w.Jupyter = jupyterMgr
return w
}
// ResolveDatasets resolves dataset paths for a task.
func ResolveDatasets(ctx context.Context, w *worker.Worker, task *queue.Task) ([]string, error) {
if task.DatasetSpecs == nil {
return nil, nil
}
dataDir := w.Config.DataDir
if dataDir == "" {
dataDir = "/tmp/data"
}
var paths []string
for _, spec := range task.DatasetSpecs {
path := dataDir + "/" + spec.Name
paths = append(paths, path)
}
return paths, nil
}