xiangning 2d70d92522 refactor(scripting): 删除旧 CustomFunction 代码 + 权限/菜单迁移
删除(workflow 模块):
- Application/BuildFlow/CustomFunctions/ 全目录(Commands/Handlers/Queries/DTOs/Services)
- Domain/Entities/CustomFunction.cs + CustomFunctionExecutionLog.cs
- Domain/Enums/CustomFunctionType.cs + CustomFunctionExecutionStatus.cs
- Infrastructure/Configurations/CustomFunction*Configuration.cs
- Host/Endpoints/Workflow/BuildFlow/CustomFunctions/ 全目录(5 端点+5 请求)
- Host/Services/Integration/HttpFunctionExecutor.cs + IHttpFunctionExecutor.cs(HTTP 函数不做,spec §11)
- WorkflowDbContext 移除 CustomFunctions/CustomFunctionExecutionLogs DbSet
- WorkflowApplicationModule 移除 ICustomFunctionExecutionService 注册

迁移:
- SeedData 权限码 buildflow:function:* → scripts.* (8 个)
- SeedData 菜单 buildflow.functions → scripts(顶级模块)
- 新增空迁移 RemoveCustomFunctionFromWorkflowModel(仅更新 ModelSnapshot)

测试清理:
- 删除 CustomFunctionTests.cs + BuildFlowApplicationTests.cs CustomFunction 用例
- BuildFlowButtonActionTests.cs 删除 7 个已 skip 的执行器测试(T9 重写)
- BuildFlowEntrySeedTests / PermissionRegistration 断言对齐新种子

Task T7 of scripting module refactor
2026-07-07 10:00:24 +08:00

56 lines
1.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

namespace BuildFlow.Architecture.Tests;
using Xunit;
/// <summary>
/// BuildFlow 低代码后台入口种子约束。保证干净库自动具备表单、按钮、函数管理菜单。
/// </summary>
public class BuildFlowEntrySeedTests
{
[Fact]
public void PlatformSeedDataShouldContainBuildFlowMetadataMenus()
{
var seedData = ReadPlatformSeedData();
Assert.Contains("\"buildflow\"", seedData, StringComparison.Ordinal);
Assert.Contains("\"buildflow.forms\"", seedData, StringComparison.Ordinal);
Assert.Contains("\"/buildflow/forms/index\"", seedData, StringComparison.Ordinal);
Assert.Contains("\"buildflow.buttons\"", seedData, StringComparison.Ordinal);
Assert.Contains("\"/buildflow/buttons/index\"", seedData, StringComparison.Ordinal);
// 脚本函数菜单已迁移至独立的 Scripting 模块(原 buildflow.functions → scripts)
Assert.Contains("\"scripts\"", seedData, StringComparison.Ordinal);
Assert.Contains("\"/scripts/index\"", seedData, StringComparison.Ordinal);
}
private static string ReadPlatformSeedData()
{
var repoRoot = FindRepoRoot();
var seedPath = Path.Combine(
repoRoot.FullName,
"src",
"modules",
"platform",
"Infrastructure",
"Persistence",
"SeedData.cs");
return File.ReadAllText(seedPath);
}
private static DirectoryInfo FindRepoRoot()
{
var current = new DirectoryInfo(AppContext.BaseDirectory);
while (current is not null)
{
if (File.Exists(Path.Combine(current.FullName, "BuildFlow.slnx")))
{
return current;
}
current = current.Parent;
}
throw new InvalidOperationException("无法定位 BuildFlow.slnx,架构测试无法确定仓库边界。");
}
}