55 lines
1.8 KiB
Go
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)
|
|
}
|
|
}
|