Files
ragflow/internal/service/ingestion_task_transition_test.go
Jack 5e60fcec9f Refactor: Refine ingestion task state transitions (#16814)
### Summary

Refine ingestion task state transitions
2026-07-10 22:47:51 +08:00

56 lines
1.8 KiB
Go

package service
import (
"errors"
"testing"
"ragflow/internal/common"
)
func TestValidateTransitionAllowsExpectedEdges(t *testing.T) {
testCases := []struct {
from string
to string
}{
{from: common.CREATED, to: common.RUNNING},
{from: common.CREATED, to: common.STOPPED},
{from: common.RUNNING, to: common.STOPPING},
{from: common.RUNNING, to: common.COMPLETED},
{from: common.RUNNING, to: common.FAILED},
{from: common.STOPPING, to: common.STOPPED},
{from: common.FAILED, to: common.CREATED},
{from: common.STOPPED, to: common.CREATED},
}
for _, tc := range testCases {
if err := validateTransition(tc.from, tc.to); err != nil {
t.Fatalf("validateTransition(%q, %q) failed: %v", tc.from, tc.to, err)
}
}
}
func TestValidateTransitionRejectsInvalidEdge(t *testing.T) {
err := validateTransition(common.CREATED, common.COMPLETED)
if err == nil {
t.Fatal("expected invalid transition to be rejected")
}
var transitionErr *InvalidTaskTransitionError
if !errors.As(err, &transitionErr) {
t.Fatalf("expected InvalidTaskTransitionError, got %T", err)
}
if transitionErr.TaskID != "" || transitionErr.From != common.CREATED || transitionErr.To != common.COMPLETED {
t.Fatalf("unexpected transition error: %+v", transitionErr)
}
}
func TestTaskStatusConflictErrorSupportsErrorsAs(t *testing.T) {
err := &TaskStatusConflictError{TaskID: "task-1", ExpectedFrom: common.CREATED, AttemptedTo: common.RUNNING, ActualCurrent: common.STOPPING}
var conflictErr *TaskStatusConflictError
if !errors.As(err, &conflictErr) {
t.Fatalf("expected TaskStatusConflictError, got %T", err)
}
if conflictErr.TaskID != "task-1" || conflictErr.ExpectedFrom != common.CREATED || conflictErr.AttemptedTo != common.RUNNING || conflictErr.ActualCurrent != common.STOPPING {
t.Fatalf("unexpected conflict error: %+v", conflictErr)
}
}