| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- using Admin.NET.Core;
- using Admin.NET.Plugin.AiDOP.Entity.S0.Manufacturing;
- using Admin.NET.Plugin.AiDOP.Entity.S0.Sales;
- using Admin.NET.Plugin.AiDOP.Entity.S0.Supply;
- using Admin.NET.Plugin.AiDOP.Entity.S0.Warehouse;
- using SqlSugar;
- using Xunit;
- namespace Admin.NET.Plugin.AiDOP.Tests.S0.Tenant;
- /// <summary>
- /// S0 tenant isolation contract for entities whose DB tables already contain tenant_id.
- /// </summary>
- public class S0TenantEntityContractTests
- {
- public static IEnumerable<object[]> TenantScopedEntityTypes()
- {
- yield return [typeof(AdoS0BarCodeType)];
- yield return [typeof(AdoS0CostCtrMaster)];
- yield return [typeof(AdoS0CustMaster)];
- yield return [typeof(AdoS0DepartmentMaster)];
- yield return [typeof(AdoS0DevMonitor)];
- yield return [typeof(AdoS0EmpSkills)];
- yield return [typeof(AdoS0EmpWorkDutyMaster)];
- yield return [typeof(AdoS0EmployeeMaster)];
- yield return [typeof(AdoS0ImageType)];
- yield return [typeof(AdoS0ItemMaster)];
- yield return [typeof(AdoS0ItemOpCondition)];
- yield return [typeof(AdoS0ItemPackMaster)];
- yield return [typeof(AdoS0ItemSubstituteDetail)];
- yield return [typeof(AdoS0LineMaster)];
- yield return [typeof(AdoS0LineSkillDetail)];
- yield return [typeof(AdoS0LineSkillMaster)];
- yield return [typeof(AdoS0LocationMaster)];
- yield return [typeof(AdoS0LocationShelfMaster)];
- yield return [typeof(AdoS0NbrControl)];
- yield return [typeof(AdoS0NbrTypeMaster)];
- yield return [typeof(AdoS0MfgPersonSkillAssignment)];
- yield return [typeof(AdoS0MfgPreprocessElement)];
- yield return [typeof(AdoS0MfgPreprocessElementParam)];
- yield return [typeof(AdoS0PriorityCode)];
- yield return [typeof(AdoS0ProdLineDetail)];
- yield return [typeof(AdoS0ProductStructureMaster)];
- yield return [typeof(AdoS0ProductStructureOp)];
- yield return [typeof(AdoS0QualitySegmentImage)];
- yield return [typeof(AdoS0MfgRoutingOpDetail)];
- yield return [typeof(AdoS0StdOpMaster)];
- yield return [typeof(AdoS0SuppMaster)];
- yield return [typeof(AdoS0WorkCtrMaster)];
- yield return [typeof(AdoS0WorkOrdControl)];
- yield return [typeof(IcSubstitute)];
- yield return [typeof(AdoS0SrmPurchase)];
- }
- [Theory]
- [MemberData(nameof(TenantScopedEntityTypes))]
- public void TenantScopedS0Entities_ImplementTenantFilterAndMapTenantId(Type entityType)
- {
- Assert.True(typeof(ITenantIdFilter).IsAssignableFrom(entityType), $"{entityType.Name} must implement ITenantIdFilter");
- var property = entityType.GetProperty(nameof(ITenantIdFilter.TenantId));
- Assert.NotNull(property);
- Assert.Equal(typeof(long?), property!.PropertyType);
- var sugarColumn = property.GetCustomAttributes(typeof(SugarColumn), inherit: true)
- .OfType<SugarColumn>()
- .SingleOrDefault();
- Assert.NotNull(sugarColumn);
- Assert.Equal("tenant_id", sugarColumn!.ColumnName);
- }
- }
|