package models_test import ( "fmt" "testing" "git.huangwc.com/pig/pig-farm-controller/internal/infra/models" "github.com/stretchr/testify/assert" ) func TestPlan_ValidateExecutionOrder(t *testing.T) { tests := []struct { name string plan models.Plan expectedError string // 期望的错误信息,如果为nil则表示不期望错误 }{ { name: "任务类型-无重复执行顺序", plan: models.Plan{ ContentType: models.PlanContentTypeTasks, Tasks: []models.Task{ {ExecutionOrder: 1}, {ExecutionOrder: 2}, {ExecutionOrder: 3}, }, }, expectedError: "", }, { name: "任务类型-重复执行顺序", plan: models.Plan{ ContentType: models.PlanContentTypeTasks, Tasks: []models.Task{ {ExecutionOrder: 1}, {ExecutionOrder: 2}, {ExecutionOrder: 1}, // 重复 }, }, expectedError: fmt.Sprintf("任务执行顺序重复: %d", 1), }, { name: "任务类型-空任务列表", plan: models.Plan{ ContentType: models.PlanContentTypeTasks, Tasks: []models.Task{}, }, expectedError: "", }, { name: "子计划类型-无重复执行顺序", plan: models.Plan{ ContentType: models.PlanContentTypeSubPlans, SubPlans: []models.SubPlan{ {ExecutionOrder: 1}, {ExecutionOrder: 2}, {ExecutionOrder: 3}, }, }, expectedError: "", }, { name: "子计划类型-重复执行顺序", plan: models.Plan{ ContentType: models.PlanContentTypeSubPlans, SubPlans: []models.SubPlan{ {ExecutionOrder: 1}, {ExecutionOrder: 2}, {ExecutionOrder: 1}, // 重复 }, }, expectedError: fmt.Sprintf("子计划执行顺序重复: %d", 1), }, { name: "子计划类型-空子计划列表", plan: models.Plan{ ContentType: models.PlanContentTypeSubPlans, SubPlans: []models.SubPlan{}, }, expectedError: "", }, { name: "未知内容类型", plan: models.Plan{ ContentType: "UNKNOWN_TYPE", // 未知类型 Tasks: []models.Task{{ExecutionOrder: 1}}, }, expectedError: "", // 对于未知类型,ValidateExecutionOrder 不会返回错误,因为它只处理已知类型 }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { err := tt.plan.ValidateExecutionOrder() if tt.expectedError != "" { assert.Error(t, err) assert.Contains(t, err.Error(), tt.expectedError) } else { assert.NoError(t, err) } }) } }