namespace BuildFlow.Architecture.Tests; using Xunit; /// /// IM 后台入口种子约束。保证干净库自动具备聊天菜单与会话操作权限。 /// public class ImEntrySeedTests { [Fact] public void PlatformSeedDataShouldContainImConversationManagePermission() { var seedData = ReadPlatformSeedData(); Assert.Contains("\"im:conversation:manage\"", seedData, StringComparison.Ordinal); } [Fact] public void PlatformSeedDataShouldContainImChatMenuEntry() { var seedData = ReadPlatformSeedData(); Assert.Contains("\"im\"", seedData, StringComparison.Ordinal); Assert.Contains("\"im.chat\"", seedData, StringComparison.Ordinal); Assert.Contains("\"/im/chat/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,架构测试无法确定仓库边界。"); } }