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) } }