Files
iotlcm/server/internal/logic/app/app_diagnosis_enterprise_test.go
T

55 lines
1.8 KiB
Go

package app
import (
"context"
"path/filepath"
"testing"
_ "github.com/gogf/gf/contrib/drivers/sqlite/v2"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/frame/g"
"git.5iot.com/iotlcm-public/iotlcm-app/internal/model/entity"
)
func TestDiagnosisTopLevelEnterprise(t *testing.T) {
ctx := context.Background()
previous := gdb.GetConfig("default")
if err := gdb.SetConfigGroup("default", gdb.ConfigGroup{{Type: "sqlite", Name: filepath.Join(t.TempDir(), "diagnosis.db")}}); err != nil {
t.Fatal(err)
}
db := g.DB()
_ = db.GetCore().ClearCacheAll(ctx)
t.Cleanup(func() {
_ = db.GetCore().ClearCacheAll(ctx)
_ = db.Close(ctx)
_ = gdb.SetConfigGroup("default", previous)
})
for _, sql := range []string{
"CREATE TABLE sys_dept (dept_id INTEGER, tenant_id TEXT, parent_id INTEGER, status TEXT, deleted_at DATETIME)",
"INSERT INTO sys_dept VALUES (100,'A',0,'0',NULL),(200,'A',100,'0',NULL),(300,'A',200,'0',NULL),(400,'B',0,'0',NULL),(500,'A',0,'1',NULL),(600,'A',0,'0','2026-01-01')",
} {
if _, err := db.Exec(ctx, sql); err != nil {
t.Fatal(err)
}
}
for _, tc := range []struct {
name string
dept int64
want bool
}{
{"顶级企业运营人员", 100, true}, {"下级管理员", 200, false}, {"多层企业", 300, false},
{"跨租户机构", 400, false}, {"停用机构", 500, false}, {"删除机构", 600, false}, {"缺失机构", 700, false},
} {
t.Run(tc.name, func(t *testing.T) {
got, err := appIsTopLevelEnterprise(ctx, &entity.SysUser{UserId: 20, TenantId: "A", DeptId: tc.dept, UserType: "sys_user"})
if err != nil || got != tc.want {
t.Fatalf("got %v, err %v; want %v", got, err, tc.want)
}
})
}
got, err := appIsTopLevelEnterprise(ctx, &entity.SysUser{UserId: 20, TenantId: "A", DeptId: 100, UserType: "app_user"})
if err != nil || got {
t.Fatal("终端不能使用顶级企业展示", got, err)
}
}