53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package job
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"haixun-backend/internal/model/job/domain/entity"
|
|
"haixun-backend/internal/model/job/domain/enum"
|
|
domusecase "haixun-backend/internal/model/job/domain/usecase"
|
|
"haixun-backend/internal/model/job/resume"
|
|
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
)
|
|
|
|
type stubJobUseCase struct {
|
|
domusecase.UseCase
|
|
template *entity.Template
|
|
}
|
|
|
|
func (s *stubJobUseCase) GetTemplate(context.Context, string) (*entity.Template, error) {
|
|
return s.template, nil
|
|
}
|
|
|
|
func TestRunner_SkipsSucceededSteps(t *testing.T) {
|
|
steps := []entity.StepProgress{
|
|
{ID: "prepare", Status: enum.StepStatusSucceeded},
|
|
{ID: "execute", Status: enum.StepStatusPending},
|
|
{ID: "finalize", Status: enum.StepStatusPending},
|
|
}
|
|
template := &entity.Template{
|
|
Type: "demo",
|
|
Steps: []entity.TemplateStep{
|
|
{ID: "prepare", WorkerType: "go"},
|
|
{ID: "execute", WorkerType: "go"},
|
|
{ID: "finalize", WorkerType: "go"},
|
|
},
|
|
}
|
|
|
|
ran := make([]string, 0, 3)
|
|
for _, step := range template.Steps {
|
|
existing := resume.StepProgressByID(steps, step.ID)
|
|
if existing != nil && resume.ShouldSkipStep(existing.Status) {
|
|
continue
|
|
}
|
|
ran = append(ran, step.ID)
|
|
}
|
|
|
|
if len(ran) != 2 || ran[0] != "execute" || ran[1] != "finalize" {
|
|
t.Fatalf("ran = %v, want [execute finalize]", ran)
|
|
}
|
|
_ = primitive.NewObjectID()
|
|
}
|