build-flow.api/tests/BuildFlow.Platform.Tests/Menus/MenuRuntimeViewModeValidatorTests.cs
xiangning baaff8db63 feat(workflow): 添加自定义函数表单绑定及权限控制功能
- 新增自定义函数与表单定义绑定关系字段 FormDefinitionId
- 实现按钮调用函数时的表单作用域权限校验机制
- 实现按钮提交表单时的作用域权限检查功能
- 添加自定义函数列表按表单定义筛选查询能力
- 新增 RelationPicker 关联选择表单组件支持
- 完善菜单权限体系支持受限但可见菜单配置
- 添加文件消息大小限制验证(最大200MB)
- 优化表单聚合变量同步异常处理机制
- 增加BuildFlow管理后台入口菜单种子数据
- 补充相关单元测试和架构约束测试用例
2026-07-05 09:30:45 +08:00

55 lines
1.9 KiB
C#

using BuildFlow.Platform.Application.Menus.Commands;
using BuildFlow.Platform.Application.Menus.Validators;
using BuildFlow.Platform.Domain.Enums;
using FluentAssertions;
using Xunit;
namespace BuildFlow.Platform.Tests.Menus;
/// <summary>
/// 菜单运行时形态校验测试。BuildFlow 自定义菜单当前只支持列表和表单两种形态。
/// </summary>
public class MenuRuntimeViewModeValidatorTests
{
[Fact]
public void CreateMenuCommand_ShouldRejectDetailRuntimeViewMode()
{
var validator = new CreateMenuCommandValidator();
var result = validator.Validate(new CreateMenuCommand
{
Code = "buildflow.form.expense.detail",
FormDefinitionId = Guid.NewGuid(),
Name = "BuildFlowFormExpenseDetail",
Path = "/buildflow/runtime/forms/expense/detail",
RenderType = MenuRenderType.BuildFlowForm,
RuntimeViewMode = MenuRuntimeViewMode.Detail,
Title = "费用申请详情",
});
result.IsValid.Should().BeFalse();
result.Errors.Should().Contain(x =>
x.PropertyName == nameof(CreateMenuCommand.RuntimeViewMode) &&
x.ErrorMessage == "自定义表单菜单运行形态只支持列表和表单");
}
[Fact]
public void UpdateMenuCommand_ShouldRejectDetailRuntimeViewMode()
{
var validator = new UpdateMenuCommandValidator();
var result = validator.Validate(new UpdateMenuCommand
{
Id = 100,
FormDefinitionId = Guid.NewGuid(),
RenderType = MenuRenderType.BuildFlowForm,
RuntimeViewMode = MenuRuntimeViewMode.Detail,
});
result.IsValid.Should().BeFalse();
result.Errors.Should().Contain(x =>
x.PropertyName == nameof(UpdateMenuCommand.RuntimeViewMode) &&
x.ErrorMessage == "自定义表单菜单运行形态只支持列表和表单");
}
}