移除所有测试代码和测试要求
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m33s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m33s
**变更说明**: - 删除所有 *_test.go 文件(单元测试、集成测试、验收测试、流程测试) - 删除整个 tests/ 目录 - 更新 CLAUDE.md:用"测试禁令"章节替换所有测试要求 - 删除测试生成 Skill (openspec-generate-acceptance-tests) - 删除测试生成命令 (opsx:gen-tests) - 更新 tasks.md:删除所有测试相关任务 **新规范**: - ❌ 禁止编写任何形式的自动化测试 - ❌ 禁止创建 *_test.go 文件 - ❌ 禁止在任务中包含测试相关工作 - ✅ 仅当用户明确要求时才编写测试 **原因**: 业务系统的正确性通过人工验证和生产环境监控保证,测试代码维护成本高于价值。 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,186 +0,0 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/break/junhong_cmp_fiber/internal/model"
|
||||
"github.com/break/junhong_cmp_fiber/pkg/constants"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"go.uber.org/zap"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func TestClassifyPermissions_PlatformFilter(t *testing.T) {
|
||||
logger, _ := zap.NewDevelopment()
|
||||
service := &Service{logger: logger}
|
||||
|
||||
permissions := []*model.Permission{
|
||||
{
|
||||
Model: gorm.Model{ID: 1},
|
||||
PermCode: "dashboard:menu",
|
||||
PermName: "仪表盘",
|
||||
PermType: constants.PermissionTypeMenu,
|
||||
Platform: constants.PlatformAll,
|
||||
Status: constants.StatusEnabled,
|
||||
},
|
||||
{
|
||||
Model: gorm.Model{ID: 2},
|
||||
PermCode: "user:menu",
|
||||
PermName: "用户管理",
|
||||
PermType: constants.PermissionTypeMenu,
|
||||
Platform: constants.PlatformWeb,
|
||||
Status: constants.StatusEnabled,
|
||||
},
|
||||
{
|
||||
Model: gorm.Model{ID: 3},
|
||||
PermCode: "mobile:menu",
|
||||
PermName: "移动端菜单",
|
||||
PermType: constants.PermissionTypeMenu,
|
||||
Platform: constants.PlatformH5,
|
||||
Status: constants.StatusEnabled,
|
||||
},
|
||||
}
|
||||
|
||||
allCodes, menus, buttons, err := service.classifyPermissions(permissions, constants.PlatformWeb)
|
||||
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, allCodes, 2)
|
||||
assert.Contains(t, allCodes, "dashboard:menu")
|
||||
assert.Contains(t, allCodes, "user:menu")
|
||||
assert.NotContains(t, allCodes, "mobile:menu")
|
||||
assert.Len(t, menus, 2)
|
||||
assert.Empty(t, buttons)
|
||||
}
|
||||
|
||||
func TestClassifyPermissions_MenuAndButton(t *testing.T) {
|
||||
logger, _ := zap.NewDevelopment()
|
||||
service := &Service{logger: logger}
|
||||
|
||||
permissions := []*model.Permission{
|
||||
{
|
||||
Model: gorm.Model{ID: 1},
|
||||
PermCode: "user:menu",
|
||||
PermName: "用户管理",
|
||||
PermType: constants.PermissionTypeMenu,
|
||||
Platform: constants.PlatformAll,
|
||||
Status: constants.StatusEnabled,
|
||||
},
|
||||
{
|
||||
Model: gorm.Model{ID: 2},
|
||||
PermCode: "user:create",
|
||||
PermName: "创建用户",
|
||||
PermType: constants.PermissionTypeButton,
|
||||
Platform: constants.PlatformAll,
|
||||
Status: constants.StatusEnabled,
|
||||
},
|
||||
{
|
||||
Model: gorm.Model{ID: 3},
|
||||
PermCode: "user:delete",
|
||||
PermName: "删除用户",
|
||||
PermType: constants.PermissionTypeButton,
|
||||
Platform: constants.PlatformAll,
|
||||
Status: constants.StatusEnabled,
|
||||
},
|
||||
}
|
||||
|
||||
allCodes, menus, buttons, err := service.classifyPermissions(permissions, constants.PlatformWeb)
|
||||
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, allCodes, 3)
|
||||
assert.Len(t, menus, 1)
|
||||
assert.Equal(t, "user:menu", menus[0].PermCode)
|
||||
assert.Len(t, buttons, 2)
|
||||
assert.Contains(t, buttons, "user:create")
|
||||
assert.Contains(t, buttons, "user:delete")
|
||||
}
|
||||
|
||||
func TestClassifyPermissions_AllPermissions(t *testing.T) {
|
||||
logger, _ := zap.NewDevelopment()
|
||||
service := &Service{logger: logger}
|
||||
|
||||
permissions := []*model.Permission{
|
||||
{
|
||||
Model: gorm.Model{ID: 1},
|
||||
PermCode: "menu1",
|
||||
PermName: "菜单1",
|
||||
PermType: constants.PermissionTypeMenu,
|
||||
Platform: constants.PlatformAll,
|
||||
Status: constants.StatusEnabled,
|
||||
},
|
||||
{
|
||||
Model: gorm.Model{ID: 2},
|
||||
PermCode: "button1",
|
||||
PermName: "按钮1",
|
||||
PermType: constants.PermissionTypeButton,
|
||||
Platform: constants.PlatformAll,
|
||||
Status: constants.StatusEnabled,
|
||||
},
|
||||
}
|
||||
|
||||
allCodes, _, _, err := service.classifyPermissions(permissions, constants.PlatformWeb)
|
||||
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, allCodes, 2)
|
||||
assert.Contains(t, allCodes, "menu1")
|
||||
assert.Contains(t, allCodes, "button1")
|
||||
}
|
||||
|
||||
func TestClassifyPermissions_PlatformAll(t *testing.T) {
|
||||
logger, _ := zap.NewDevelopment()
|
||||
service := &Service{logger: logger}
|
||||
|
||||
permissions := []*model.Permission{
|
||||
{
|
||||
Model: gorm.Model{ID: 1},
|
||||
PermCode: "common:menu",
|
||||
PermName: "通用菜单",
|
||||
PermType: constants.PermissionTypeMenu,
|
||||
Platform: constants.PlatformAll,
|
||||
Status: constants.StatusEnabled,
|
||||
},
|
||||
}
|
||||
|
||||
allCodesWeb, menusWeb, _, errWeb := service.classifyPermissions(permissions, constants.PlatformWeb)
|
||||
allCodesH5, menusH5, _, errH5 := service.classifyPermissions(permissions, constants.PlatformH5)
|
||||
|
||||
assert.NoError(t, errWeb)
|
||||
assert.NoError(t, errH5)
|
||||
assert.Len(t, allCodesWeb, 1)
|
||||
assert.Len(t, allCodesH5, 1)
|
||||
assert.Len(t, menusWeb, 1)
|
||||
assert.Len(t, menusH5, 1)
|
||||
assert.Equal(t, "common:menu", menusWeb[0].PermCode)
|
||||
assert.Equal(t, "common:menu", menusH5[0].PermCode)
|
||||
}
|
||||
|
||||
func TestClassifyPermissions_DisabledPermissions(t *testing.T) {
|
||||
logger, _ := zap.NewDevelopment()
|
||||
service := &Service{logger: logger}
|
||||
|
||||
permissions := []*model.Permission{
|
||||
{
|
||||
Model: gorm.Model{ID: 1},
|
||||
PermCode: "enabled:menu",
|
||||
PermName: "启用菜单",
|
||||
PermType: constants.PermissionTypeMenu,
|
||||
Platform: constants.PlatformAll,
|
||||
Status: constants.StatusEnabled,
|
||||
},
|
||||
{
|
||||
Model: gorm.Model{ID: 2},
|
||||
PermCode: "disabled:menu",
|
||||
PermName: "禁用菜单",
|
||||
PermType: constants.PermissionTypeMenu,
|
||||
Platform: constants.PlatformAll,
|
||||
Status: constants.StatusDisabled,
|
||||
},
|
||||
}
|
||||
|
||||
allCodes, menus, _, err := service.classifyPermissions(permissions, constants.PlatformWeb)
|
||||
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, allCodes, 1)
|
||||
assert.Contains(t, allCodes, "enabled:menu")
|
||||
assert.NotContains(t, allCodes, "disabled:menu")
|
||||
assert.Len(t, menus, 1)
|
||||
}
|
||||
@@ -1,126 +0,0 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/break/junhong_cmp_fiber/internal/model"
|
||||
"github.com/break/junhong_cmp_fiber/internal/model/dto"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"go.uber.org/zap"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func TestBuildMenuTree_RootNodes(t *testing.T) {
|
||||
logger, _ := zap.NewDevelopment()
|
||||
service := &Service{logger: logger}
|
||||
|
||||
permissions := []*model.Permission{
|
||||
{Model: gorm.Model{ID: 1}, PermCode: "user:menu", PermName: "用户管理", URL: "/users", Sort: 1, ParentID: nil},
|
||||
{Model: gorm.Model{ID: 2}, PermCode: "order:menu", PermName: "订单管理", URL: "/orders", Sort: 2, ParentID: nil},
|
||||
{Model: gorm.Model{ID: 3}, PermCode: "dashboard:menu", PermName: "仪表盘", URL: "/dashboard", Sort: 0, ParentID: nil},
|
||||
}
|
||||
|
||||
result := service.buildMenuTree(permissions)
|
||||
|
||||
assert.Len(t, result, 3)
|
||||
assert.Equal(t, "dashboard:menu", result[0].PermCode)
|
||||
assert.Equal(t, "user:menu", result[1].PermCode)
|
||||
assert.Equal(t, "order:menu", result[2].PermCode)
|
||||
assert.Empty(t, result[0].Children)
|
||||
}
|
||||
|
||||
func TestBuildMenuTree_MultiLevel(t *testing.T) {
|
||||
logger, _ := zap.NewDevelopment()
|
||||
service := &Service{logger: logger}
|
||||
|
||||
parentID1 := uint(1)
|
||||
parentID2 := uint(3)
|
||||
|
||||
permissions := []*model.Permission{
|
||||
{Model: gorm.Model{ID: 1}, PermCode: "user:menu", PermName: "用户管理", URL: "/users", Sort: 1, ParentID: nil},
|
||||
{Model: gorm.Model{ID: 2}, PermCode: "user:list:menu", PermName: "用户列表", URL: "/users/list", Sort: 10, ParentID: &parentID1},
|
||||
{Model: gorm.Model{ID: 3}, PermCode: "user:role:menu", PermName: "角色管理", URL: "/users/roles", Sort: 5, ParentID: &parentID1},
|
||||
{Model: gorm.Model{ID: 4}, PermCode: "user:role:detail:menu", PermName: "角色详情", URL: "/users/roles/detail", Sort: 1, ParentID: &parentID2},
|
||||
}
|
||||
|
||||
result := service.buildMenuTree(permissions)
|
||||
|
||||
assert.Len(t, result, 1)
|
||||
assert.Equal(t, "user:menu", result[0].PermCode)
|
||||
assert.Len(t, result[0].Children, 2)
|
||||
assert.Equal(t, "user:role:menu", result[0].Children[0].PermCode)
|
||||
assert.Equal(t, "user:list:menu", result[0].Children[1].PermCode)
|
||||
assert.Len(t, result[0].Children[0].Children, 1)
|
||||
assert.Equal(t, "user:role:detail:menu", result[0].Children[0].Children[0].PermCode)
|
||||
}
|
||||
|
||||
func TestBuildMenuTree_OrphanNodes(t *testing.T) {
|
||||
logger, _ := zap.NewDevelopment()
|
||||
service := &Service{logger: logger}
|
||||
|
||||
nonExistentParentID := uint(999)
|
||||
|
||||
permissions := []*model.Permission{
|
||||
{Model: gorm.Model{ID: 1}, PermCode: "user:menu", PermName: "用户管理", URL: "/users", Sort: 1, ParentID: nil},
|
||||
{Model: gorm.Model{ID: 2}, PermCode: "orphan:menu", PermName: "孤儿菜单", URL: "/orphan", Sort: 0, ParentID: &nonExistentParentID},
|
||||
}
|
||||
|
||||
result := service.buildMenuTree(permissions)
|
||||
|
||||
assert.Len(t, result, 2)
|
||||
assert.Equal(t, "orphan:menu", result[0].PermCode)
|
||||
assert.Equal(t, "user:menu", result[1].PermCode)
|
||||
assert.Empty(t, result[0].Children)
|
||||
}
|
||||
|
||||
func TestBuildMenuTree_Sorting(t *testing.T) {
|
||||
logger, _ := zap.NewDevelopment()
|
||||
service := &Service{logger: logger}
|
||||
|
||||
parentID := uint(1)
|
||||
|
||||
permissions := []*model.Permission{
|
||||
{Model: gorm.Model{ID: 1}, PermCode: "user:menu", PermName: "用户管理", URL: "/users", Sort: 1, ParentID: nil},
|
||||
{Model: gorm.Model{ID: 2}, PermCode: "user:list:menu", PermName: "用户列表", URL: "/users/list", Sort: 10, ParentID: &parentID},
|
||||
{Model: gorm.Model{ID: 3}, PermCode: "user:role:menu", PermName: "角色管理", URL: "/users/roles", Sort: 5, ParentID: &parentID},
|
||||
{Model: gorm.Model{ID: 4}, PermCode: "user:dept:menu", PermName: "部门管理", URL: "/users/depts", Sort: 8, ParentID: &parentID},
|
||||
}
|
||||
|
||||
result := service.buildMenuTree(permissions)
|
||||
|
||||
assert.Len(t, result, 1)
|
||||
assert.Len(t, result[0].Children, 3)
|
||||
assert.Equal(t, "user:role:menu", result[0].Children[0].PermCode)
|
||||
assert.Equal(t, 5, result[0].Children[0].Sort)
|
||||
assert.Equal(t, "user:dept:menu", result[0].Children[1].PermCode)
|
||||
assert.Equal(t, 8, result[0].Children[1].Sort)
|
||||
assert.Equal(t, "user:list:menu", result[0].Children[2].PermCode)
|
||||
assert.Equal(t, 10, result[0].Children[2].Sort)
|
||||
}
|
||||
|
||||
func TestBuildMenuTree_EmptyInput(t *testing.T) {
|
||||
logger, _ := zap.NewDevelopment()
|
||||
service := &Service{logger: logger}
|
||||
|
||||
result := service.buildMenuTree([]*model.Permission{})
|
||||
|
||||
assert.NotNil(t, result)
|
||||
assert.Empty(t, result)
|
||||
}
|
||||
|
||||
func TestSortMenuNodes(t *testing.T) {
|
||||
logger, _ := zap.NewDevelopment()
|
||||
service := &Service{logger: logger}
|
||||
|
||||
nodes := []dto.MenuNode{
|
||||
{ID: 3, PermCode: "c", Sort: 30, Children: []dto.MenuNode{}},
|
||||
{ID: 1, PermCode: "a", Sort: 10, Children: []dto.MenuNode{}},
|
||||
{ID: 2, PermCode: "b", Sort: 20, Children: []dto.MenuNode{}},
|
||||
}
|
||||
|
||||
service.sortMenuNodes(nodes)
|
||||
|
||||
assert.Equal(t, "a", nodes[0].PermCode)
|
||||
assert.Equal(t, "b", nodes[1].PermCode)
|
||||
assert.Equal(t, "c", nodes[2].PermCode)
|
||||
}
|
||||
Reference in New Issue
Block a user