thread-master/backend/internal/model/job/usecase/enqueue_run_test.go

45 lines
1.1 KiB
Go

package usecase
import (
"context"
"testing"
"go.mongodb.org/mongo-driver/bson/primitive"
"haixun-backend/internal/model/job/domain/entity"
"haixun-backend/internal/model/job/domain/enum"
)
func TestEnqueueRun_DoesNotOverwriteRunningClaim(t *testing.T) {
ctx := context.Background()
template := expandGraphTemplate()
queue := newMemoryQueueRepo()
runs := newMemoryRunRepo(nil)
uc := testUseCaseFull(template, runs, nil, queue).(*jobUseCase)
id := primitive.NewObjectID()
runs.run = &entity.Run{
ID: id,
TemplateType: template.Type,
Status: enum.RunStatusRunning,
WorkerType: "go",
LockedBy: "worker-a",
}
pending := &entity.Run{
ID: id,
TemplateType: template.Type,
Status: enum.RunStatusPending,
WorkerType: "go",
}
updated, err := uc.enqueueRun(ctx, pending)
if err != nil {
t.Fatalf("enqueueRun() error = %v", err)
}
if updated.Status != enum.RunStatusRunning {
t.Fatalf("status = %s, want running", updated.Status)
}
if len(queue.queues["go"]) != 0 {
t.Fatalf("queue = %v, want duplicate enqueue removed", queue.queues["go"])
}
}