1. 增加重复顺序校验
2. 增加测试用例
This commit is contained in:
103
internal/infra/models/plan_test.go
Normal file
103
internal/infra/models/plan_test.go
Normal file
@@ -0,0 +1,103 @@
|
||||
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)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user