| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- using System.ComponentModel.DataAnnotations;
- using Admin.NET.Plugin.AiDOP.Dto.S0.Quality;
- using Xunit;
- namespace Admin.NET.Plugin.AiDOP.Tests.S0.Quality;
- public class AdoS0QualityDtosValidationTests
- {
- private static IReadOnlyList<ValidationResult> Validate(object model)
- {
- var context = new ValidationContext(model);
- var results = new List<ValidationResult>();
- Validator.TryValidateObject(model, context, results, validateAllProperties: true);
- return results;
- }
- [Fact]
- public void RawWhitelist_WhenSupplierFieldsMissing_ReturnsRequiredErrors()
- {
- var dto = new AdoS0QmsRawWhitelistUpsertDto
- {
- SupplierCode = "",
- SupplierName = ""
- };
- var results = Validate(dto);
- Assert.Contains(results, r => r.ErrorMessage == "供应商编码不能为空");
- Assert.Contains(results, r => r.ErrorMessage == "供应商名称不能为空");
- }
- [Theory]
- [InlineData(typeof(AdoS0QmsSamplingSchemeUpsertDto))]
- [InlineData(typeof(AdoS0QmsInspectionInstrumentUpsertDto))]
- [InlineData(typeof(AdoS0QmsInspectionMethodUpsertDto))]
- [InlineData(typeof(AdoS0QmsInspectionItemUpsertDto))]
- [InlineData(typeof(AdoS0QmsInspectionFrequencyUpsertDto))]
- [InlineData(typeof(AdoS0QmsInspectionBasisUpsertDto))]
- [InlineData(typeof(AdoS0QmsInspectionStandardUpsertDto))]
- [InlineData(typeof(AdoS0QmsInspectionPlanUpsertDto))]
- public void NumberNameDtos_WhenDefaultsUsed_ReturnRequiredErrors(Type dtoType)
- {
- var dto = Activator.CreateInstance(dtoType)!;
- var results = Validate(dto);
- Assert.Contains(results, r => r.ErrorMessage == "编号不能为空");
- Assert.Contains(results, r => r.ErrorMessage == "名称不能为空");
- }
- /// <summary>
- /// 四张检规表的 UpsertDto 上不得残留任何 [Required]。
- /// Create 与 Update 共用同一 DTO,任何 [Required] 都会在模型绑定阶段先于
- /// AdoS0QmsSpecAggregateGuard 触发、把 Update 挡成 400,从而破坏「历史兼容」——
- /// 实测 qms_gcjygf 有 3 行 wjbh 为空,正是被遗留的 FileNumber[Required] 锁死。
- /// 必填一律由守卫按新增/编辑分别判定,见 AdoS0QmsSpecAggregateGuardTests。
- /// </summary>
- [Theory]
- [InlineData(typeof(AdoS0QmsRawInspectionSpecUpsertDto))]
- [InlineData(typeof(AdoS0QmsProcessInspectionSpecUpsertDto))]
- [InlineData(typeof(AdoS0QmsFqcInspectionSpecUpsertDto))]
- [InlineData(typeof(AdoS0QmsOqcInspectionSpecUpsertDto))]
- public void SpecUpsertDtos_CarryNoRequiredAttribute_SoUpdateReachesTheGuard(Type dtoType)
- {
- var dto = Activator.CreateInstance(dtoType)!;
- var results = Validate(dto);
- Assert.Empty(results);
- }
- }
|