SmartOpsImprovementLedgerTests.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using Xunit;
  2. namespace Admin.NET.Plugin.AiDOP.Tests.SmartOps;
  3. public class SmartOpsImprovementLedgerTests
  4. {
  5. [Fact]
  6. public void FuncCode_S9_017_IsRegisteredOnce()
  7. {
  8. var source = File.ReadAllText(FindFile("Web", "src", "constants", "aidopFuncCodes.ts"));
  9. Assert.Contains("FUNC-S9-017", source);
  10. Assert.Contains("改善计划台账", source);
  11. Assert.Equal(1, Count(source, "FUNC-S9-017"));
  12. Assert.DoesNotContain("Title = \"FUNC-S9-017", File.ReadAllText(FindFile(
  13. "server", "Plugins", "Admin.NET.Plugin.AiDOP", "SeedData", "SysMenuSeedData.cs")));
  14. }
  15. [Fact]
  16. public void LedgerApi_FiltersAndExportStayTenantScoped()
  17. {
  18. var source = File.ReadAllText(FindFile(
  19. "server", "Plugins", "Admin.NET.Plugin.AiDOP", "Controllers",
  20. "AdoSmartOpsImprovementPlanController.cs"));
  21. Assert.Contains("ApplyLedgerFilter", source);
  22. Assert.Contains("input.Overdue", source);
  23. Assert.Contains("input.AutoVerifyResult", source);
  24. Assert.Contains("[HttpPost(\"export\")]", source);
  25. Assert.Contains("x.TenantId == tenantId", source);
  26. Assert.Contains("ledgerLogs", source);
  27. }
  28. private static int Count(string source, string token)
  29. {
  30. var n = 0;
  31. for (var i = 0; (i = source.IndexOf(token, i, StringComparison.Ordinal)) >= 0; i += token.Length)
  32. n++;
  33. return n;
  34. }
  35. private static string FindFile(params string[] parts)
  36. {
  37. var dir = new DirectoryInfo(AppContext.BaseDirectory);
  38. while (dir != null)
  39. {
  40. var candidate = Path.Combine(new[] { dir.FullName }.Concat(parts).ToArray());
  41. if (File.Exists(candidate)) return candidate;
  42. dir = dir.Parent;
  43. }
  44. throw new FileNotFoundException(string.Join("/", parts));
  45. }
  46. }