thread-master/internal/model/job/resume/resume_test.go

47 lines
1.3 KiB
Go

package resume
import (
"testing"
"haixun-backend/internal/model/job/domain/entity"
"haixun-backend/internal/model/job/domain/enum"
)
func TestPrepareStepsForRetry_PreservesSucceeded(t *testing.T) {
started := int64(100)
ended := int64(200)
steps := []entity.StepProgress{
{ID: "prepare", Status: enum.StepStatusSucceeded, StartedAt: &started, EndedAt: &ended, Message: "done"},
{ID: "execute", Status: enum.StepStatusFailed, Message: "boom"},
}
out := PrepareStepsForRetry(steps)
if out[0].Status != enum.StepStatusSucceeded {
t.Fatalf("prepare status = %s", out[0].Status)
}
if out[1].Status != enum.StepStatusPending {
t.Fatalf("execute status = %s", out[1].Status)
}
if out[1].Message != "" {
t.Fatalf("execute message = %q", out[1].Message)
}
}
func TestFirstResumablePhase(t *testing.T) {
steps := []entity.StepProgress{
{ID: "prepare", Status: enum.StepStatusSucceeded},
{ID: "execute", Status: enum.StepStatusPending},
}
if got := FirstResumablePhase(steps); got != "execute" {
t.Fatalf("phase = %s, want execute", got)
}
}
func TestShouldSkipStep(t *testing.T) {
if !ShouldSkipStep(enum.StepStatusSucceeded) {
t.Fatal("succeeded should be skipped")
}
if ShouldSkipStep(enum.StepStatusPending) {
t.Fatal("pending should not be skipped")
}
}