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 Validate(object model) { var context = new ValidationContext(model); var results = new List(); 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 == "名称不能为空"); } [Theory] [InlineData(typeof(AdoS0QmsRawInspectionSpecUpsertDto))] [InlineData(typeof(AdoS0QmsProcessInspectionSpecUpsertDto))] public void FileNumberDtos_WhenDefaultsUsed_ReturnRequiredError(Type dtoType) { var dto = Activator.CreateInstance(dtoType)!; var results = Validate(dto); Assert.Contains(results, r => r.ErrorMessage == "文件编号不能为空"); } }