| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- using Xunit;
- namespace Admin.NET.Plugin.AiDOP.Tests.DataPlatform;
- public class MdpStandardUpsertContractTests
- {
- [Fact]
- public void S1ShipStandardUpsert_RefreshesFactoryScope()
- {
- var source = File.ReadAllText(FindFile(
- "server", "Plugins", "Admin.NET.Plugin.AiDOP", "Order", "S1MdpSyncTransformService.cs"));
- Assert.True(Count(source, "factory_id=VALUES(factory_id)") >= 3);
- Assert.Contains("shipper_no=VALUES(shipper_no)", source);
- Assert.DoesNotContain("SELECT tenant_id AS TenantId, 1 AS FactoryId,\n 'S1_L1_004'", source);
- Assert.DoesNotContain("SELECT tenant_id AS TenantId, 1 AS FactoryId,\n 'S1_L2_013'", source);
- Assert.DoesNotContain("SELECT tenant_id AS TenantId, 1 AS FactoryId,\n 'S1_L2_014'", source);
- Assert.DoesNotContain("SELECT tenant_id AS TenantId, 1 AS FactoryId,\n 'S1_L2_015'", source);
- }
- [Fact]
- public void S3DeliveryScheduleUpsert_RefreshesLifecycleDates()
- {
- var source = File.ReadAllText(FindFile(
- "server", "Plugins", "Admin.NET.Plugin.AiDOP", "Supply", "S3MdpSyncTransformService.cs"));
- Assert.Contains("request_date=VALUES(request_date)", source);
- Assert.Contains("submit_date=VALUES(submit_date)", source);
- Assert.Contains("last_sent_date=VALUES(last_sent_date)", source);
- Assert.Contains("send_date=VALUES(send_date)", source);
- Assert.Contains("arrive_date=VALUES(arrive_date)", source);
- Assert.Contains("issued_qty=VALUES(issued_qty)", source);
- Assert.Contains("shortage_qty=VALUES(shortage_qty)", source);
- Assert.Contains("ready_status=VALUES(ready_status)", source);
- Assert.Contains("factory_id=VALUES(factory_id)", source);
- }
- [Fact]
- public void S3S4DashboardDerivedQueries_StayFactoryScoped()
- {
- var source = File.ReadAllText(FindFile(
- "server", "Plugins", "Admin.NET.Plugin.AiDOP", "Controllers", "AidopKanbanController.cs"));
- Assert.Contains("GetS3ReadinessSummaryAsync(long tenantId, long factoryId)", source);
- Assert.Contains("GetS3DeliverySummaryAsync(long tenantId, long factoryId)", source);
- Assert.True(Count(source, "COALESCE(NULLIF(factory_id,0),1)=@factoryId") >= 10);
- }
- [Fact]
- public void S4ProcurementCycle_UsesActualReceiptDate()
- {
- var source = File.ReadAllText(FindFile(
- "server", "Plugins", "Admin.NET.Plugin.AiDOP", "ProcurementExecution", "S4MdpSyncTransformService.cs"));
- Assert.Contains("FROM mdp_std_delivery_result", source);
- Assert.Contains("MAX(receipt_date) AS receipt_date", source);
- Assert.Contains("TIMESTAMPDIFF(DAY, ds.request_date, r.receipt_date)", source);
- Assert.DoesNotContain(
- "TIMESTAMPDIFF(DAY, ds.request_date, COALESCE(ds.submit_date, ds.last_sent_date))",
- source);
- }
- private static int Count(string source, string token)
- {
- var count = 0;
- for (var index = 0; (index = source.IndexOf(token, index, StringComparison.Ordinal)) >= 0; index += token.Length)
- count++;
- return count;
- }
- private static string FindFile(params string[] parts)
- {
- var dir = new DirectoryInfo(AppContext.BaseDirectory);
- while (dir != null)
- {
- var candidate = Path.Combine(new[] { dir.FullName }.Concat(parts).ToArray());
- if (File.Exists(candidate)) return candidate;
- dir = dir.Parent;
- }
- throw new FileNotFoundException(string.Join("/", parts));
- }
- }
|