sync: 对齐小程序 v1.0.2 生产代码并脱敏
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
"git.5iot.com/iotlcm-public/iotlcm-app/internal/consts"
|
||||
"git.5iot.com/iotlcm-public/iotlcm-app/internal/model"
|
||||
"git.5iot.com/iotlcm-public/iotlcm-app/internal/model/entity"
|
||||
)
|
||||
|
||||
func TestAppCustomerSummary(t *testing.T) {
|
||||
items := make([]*model.AppCustomerModel, 0, 25)
|
||||
for index := 0; index < 25; index++ {
|
||||
items = append(items, &model.AppCustomerModel{Status: "0", RealNameStatus: "已录入实名资料"})
|
||||
}
|
||||
items[24].Status = "1"
|
||||
items[24].RealNameStatus = "实名资料待完善"
|
||||
items = append(items, nil)
|
||||
summary := appCustomerSummary(items)
|
||||
if summary.Total != 25 || summary.NormalCount != 24 || summary.PendingProfileCount != 1 {
|
||||
t.Fatalf("unexpected summary: %+v", summary)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAppCustomerSummaryEmpty(t *testing.T) {
|
||||
summary := appCustomerSummary(nil)
|
||||
if summary.Total != 0 || summary.NormalCount != 0 || summary.PendingProfileCount != 0 {
|
||||
t.Fatalf("unexpected empty summary: %+v", summary)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAppCustomerFilterKeepsAuthorizedScope(t *testing.T) {
|
||||
depts := []*entity.SysDept{
|
||||
{DeptId: 101, DeptName: "企业甲", DeptKey: "A101", Status: "0"},
|
||||
{DeptId: 102, DeptName: "企业乙", DeptKey: "A102", Status: "1"},
|
||||
nil,
|
||||
}
|
||||
cases := []struct {
|
||||
name, keyword, status string
|
||||
want int64
|
||||
}{
|
||||
{"按编码搜索", "A101", "", 101},
|
||||
{"按企业名称搜索", "企业乙", "", 102},
|
||||
{"仅停用客户", "", "1", 102},
|
||||
}
|
||||
for _, item := range cases {
|
||||
t.Run(item.name, func(t *testing.T) {
|
||||
rows := appFilterEnterpriseDepts(depts, item.keyword, item.status)
|
||||
if len(rows) != 1 || rows[0].DeptId != item.want {
|
||||
t.Fatalf("unexpected result: %+v", rows)
|
||||
}
|
||||
})
|
||||
}
|
||||
if rows := appFilterEnterpriseDepts(depts, "A101", "1"); len(rows) != 0 {
|
||||
t.Fatalf("combined filters must intersect: %+v", rows)
|
||||
}
|
||||
if rows := appFilterEnterpriseDepts(depts, "未授权企业", ""); len(rows) != 0 {
|
||||
t.Fatalf("search must not expand candidate scope: %+v", rows)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAppCustomerPage(t *testing.T) {
|
||||
items := make([]*model.AppCustomerModel, 25)
|
||||
for index := range items {
|
||||
items[index] = &model.AppCustomerModel{CustomerId: int64(index + 1)}
|
||||
}
|
||||
cases := []struct {
|
||||
name string
|
||||
page, size, count int
|
||||
first int64
|
||||
}{
|
||||
{"首页", 1, 20, 20, 1},
|
||||
{"末页", 2, 20, 5, 21},
|
||||
{"越界页", 3, 20, 0, 0},
|
||||
{"最大页码", int(^uint(0) >> 1), 20, 0, 0},
|
||||
{"最大页容量", 1, int(^uint(0) >> 1), 25, 1},
|
||||
{"无效页", 0, 20, 0, 0},
|
||||
{"无效容量", 1, 0, 0, 0},
|
||||
}
|
||||
for _, item := range cases {
|
||||
t.Run(item.name, func(t *testing.T) {
|
||||
rows := appCustomerPage(items, item.page, item.size)
|
||||
if len(rows) != item.count {
|
||||
t.Fatalf("count=%d want=%d", len(rows), item.count)
|
||||
}
|
||||
if len(rows) > 0 && rows[0].CustomerId != item.first {
|
||||
t.Fatalf("first=%d want=%d", rows[0].CustomerId, item.first)
|
||||
}
|
||||
})
|
||||
}
|
||||
if rows := appCustomerPage(nil, 1, 20); rows == nil || len(rows) != 0 {
|
||||
t.Fatal("empty result must serialize as an array")
|
||||
}
|
||||
}
|
||||
|
||||
func TestAppCustomerRoleScope(t *testing.T) {
|
||||
user := &entity.SysUser{UserId: 7, DeptId: 101, TenantId: "A"}
|
||||
cases := []struct {
|
||||
name, scope string
|
||||
all bool
|
||||
deptCount, userCount int
|
||||
}{
|
||||
{"全部数据", consts.SysRoleDataScopeAll, true, 0, 0},
|
||||
{"仅本级", consts.SysRoleDataScopeDept, false, 1, 0},
|
||||
{"仅本人", consts.SysRoleDataScopePersonal, false, 0, 1},
|
||||
{"未知权限拒绝", "invalid", false, 0, 0},
|
||||
}
|
||||
for _, item := range cases {
|
||||
t.Run(item.name, func(t *testing.T) {
|
||||
scope, err := appBuildEnterpriseDataScope(context.Background(), user, 1, item.scope, true)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if scope.All != item.all || len(scope.DeptIds) != item.deptCount || len(scope.UserIds) != item.userCount {
|
||||
t.Fatalf("unexpected scope: %+v", scope)
|
||||
}
|
||||
if !scope.All && !scope.Restricted {
|
||||
t.Fatal("non-all scope must remain restricted")
|
||||
}
|
||||
if len(scope.DeptIds) > 0 && scope.DeptIds[0] != user.DeptId {
|
||||
t.Fatal("wrong dept scope")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user