AidopTenantMigrationTests.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using Admin.NET.Core;
  2. using Admin.NET.Plugin.AiDOP.Infrastructure;
  3. using Admin.NET.Plugin.AiDOP.Entity;
  4. using Xunit;
  5. namespace Admin.NET.Plugin.AiDOP.Tests;
  6. public class AidopTenantMigrationTests
  7. {
  8. [Fact]
  9. public void AtomicEntity_IsExcludedFromGlobalCodeFirst()
  10. {
  11. var ignore = typeof(AdoSmartOpsKpiAtomicDay)
  12. .GetCustomAttributes(typeof(IgnoreTableAttribute), inherit: false);
  13. Assert.Single(ignore);
  14. }
  15. [Fact]
  16. public void AtomicDefaults_ReadySchemaDoesNotGenerateAlter()
  17. {
  18. var columns = ReadyColumns();
  19. var clauses = AidopTenantMigration.BuildKpiAtomicDefaultAlterClauses(columns);
  20. Assert.Empty(clauses);
  21. }
  22. [Fact]
  23. public void AtomicDefaults_OnlyRepairsDriftedColumns()
  24. {
  25. var columns = ReadyColumns();
  26. columns.Single(x => x.Name == "grain").DefaultValue = null;
  27. var clauses = AidopTenantMigration.BuildKpiAtomicDefaultAlterClauses(columns);
  28. var clause = Assert.Single(clauses);
  29. Assert.Contains("MODIFY grain", clause);
  30. }
  31. private static List<KpiAtomicColumnState> ReadyColumns()
  32. {
  33. var emptyDefaultColumns = new[]
  34. {
  35. "customer_code", "product_code", "order_no", "production_line",
  36. "supplier_code", "material_code", "po_no", "warehouse_code",
  37. "work_order_no", "equipment_code", "outbound_no"
  38. };
  39. var columns = emptyDefaultColumns
  40. .Select(name => new KpiAtomicColumnState
  41. {
  42. Name = name,
  43. DefaultValue = "",
  44. IsNullable = "NO"
  45. })
  46. .ToList();
  47. columns.Add(new KpiAtomicColumnState { Name = "grain", DefaultValue = "day", IsNullable = "NO" });
  48. columns.Add(new KpiAtomicColumnState { Name = "is_deleted", DefaultValue = "0", IsNullable = "NO" });
  49. return columns;
  50. }
  51. }