104 lines
2.4 KiB
Go
104 lines
2.4 KiB
Go
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)
|
||
}
|
||
})
|
||
}
|
||
}
|