fix: 优化工作人员重复信息提示
This commit is contained in:
71
backend/api/internal/logic/common/staff_wiring_test.go
Normal file
71
backend/api/internal/logic/common/staff_wiring_test.go
Normal file
@@ -0,0 +1,71 @@
|
||||
// 功能描述:验证三个管理后台的工作人员写入入口均接入公共错误转换链路。
|
||||
// 版本:v1.0
|
||||
package common
|
||||
|
||||
import (
|
||||
"go/ast"
|
||||
"go/parser"
|
||||
"go/token"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// TestStaffHandlersUseWriteErrorConversion 防止任一后台重新绕过工作人员错误转换器。
|
||||
// 参数:t 为 Go 测试上下文。
|
||||
// 返回值:无。
|
||||
func TestStaffHandlersUseWriteErrorConversion(t *testing.T) {
|
||||
_, currentFile, _, ok := runtime.Caller(0)
|
||||
if !ok {
|
||||
t.Fatal("无法定位工作人员接线测试文件")
|
||||
}
|
||||
logicDirectory := filepath.Dir(filepath.Dir(currentFile))
|
||||
targets := []struct {
|
||||
name string
|
||||
path string
|
||||
}{
|
||||
{name: "平台总后台", path: filepath.Join(logicDirectory, "platform", "staff", "staff.go")},
|
||||
{name: "气站后台", path: filepath.Join(logicDirectory, "gas", "staff.go")},
|
||||
{name: "配送点后台", path: filepath.Join(logicDirectory, "delivery", "staff.go")},
|
||||
}
|
||||
|
||||
for _, target := range targets {
|
||||
t.Run(target.name, func(t *testing.T) {
|
||||
calls := commonCallsInFile(t, target.path)
|
||||
if calls["CreateStaffRecord"] == 0 {
|
||||
t.Fatalf("%s工作人员创建入口未接入 CreateStaffRecord", target.name)
|
||||
}
|
||||
if calls["UpdateAllowedByIdentityWithError"] == 0 {
|
||||
t.Fatalf("%s工作人员编辑入口未接入错误转换更新函数", target.name)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// commonCallsInFile 统计源文件中调用 common 包函数的次数。
|
||||
// 参数:t 为测试上下文,path 为待检查的 Go 源文件。
|
||||
// 返回值:以函数名为键、调用次数为值的映射。
|
||||
func commonCallsInFile(t *testing.T, path string) map[string]int {
|
||||
t.Helper()
|
||||
file, err := parser.ParseFile(token.NewFileSet(), path, nil, 0)
|
||||
if err != nil {
|
||||
t.Fatalf("解析工作人员处理器失败:%v", err)
|
||||
}
|
||||
calls := map[string]int{}
|
||||
ast.Inspect(file, func(node ast.Node) bool {
|
||||
call, ok := node.(*ast.CallExpr)
|
||||
if !ok {
|
||||
return true
|
||||
}
|
||||
selector, ok := call.Fun.(*ast.SelectorExpr)
|
||||
if !ok {
|
||||
return true
|
||||
}
|
||||
packageName, ok := selector.X.(*ast.Ident)
|
||||
if ok && packageName.Name == "common" {
|
||||
calls[selector.Sel.Name]++
|
||||
}
|
||||
return true
|
||||
})
|
||||
return calls
|
||||
}
|
||||
Reference in New Issue
Block a user