using DOAN.Model.MES.product; using DOAN.Model.MES.product.Dto; using DOAN.Service.MES.product; using DOAN.Service.MES.product.IService; using Infrastructure.Pagination; using Moq; using Xunit; namespace DOAN.Tests.MES.Product { /// /// 工单查询服务测试 /// public class ProWorkorderQueryServiceTests { private readonly IProWorkorderQueryService _queryService; private readonly Mock _mockQueryService; public ProWorkorderQueryServiceTests() { // 由于ProWorkorderQueryService继承自BaseService,需要模拟依赖 // 这里使用Moq创建模拟对象 _mockQueryService = new Mock(); _queryService = _mockQueryService.Object; } /// /// 测试查询生产工单列表 /// [Fact] public void GetList_ShouldReturnPagedWorkorders() { // Arrange var queryDto = new ProWorkorderQueryDto { productionName = "测试产品", productionCode = "TEST001" }; var expectedResult = new PagedInfo { Total = 1, Result = new List { new ProWorkorderDto3 { productionName = "测试产品", productionCode = "TEST001" } } }; _mockQueryService.Setup(x => x.GetList(It.IsAny())) .Returns(expectedResult); // Act var result = _queryService.GetList(queryDto); // Assert Assert.NotNull(result); Assert.Equal(expectedResult.Total, result.Total); Assert.Single(result.Result); Assert.Equal(expectedResult.Result[0].productionName, result.Result[0].productionName); Assert.Equal(expectedResult.Result[0].productionCode, result.Result[0].productionCode); } /// /// 测试获取工单无校验 /// [Fact] public void GetList_NOCheck_ShouldReturnPagedWorkorders() { // Arrange var queryDto = new ProWorkorderQueryDto { productionName = "测试产品", productionCode = "TEST001" }; var expectedResult = new PagedInfo { Total = 1, Result = new List { new ProWorkorderDto { productionName = "测试产品", productionCode = "TEST001" } } }; _mockQueryService.Setup(x => x.GetList_NOCheck(It.IsAny())) .Returns(expectedResult); // Act var result = _queryService.GetList_NOCheck(queryDto); // Assert Assert.NotNull(result); Assert.Equal(expectedResult.Total, result.Total); Assert.Single(result.Result); Assert.Equal(expectedResult.Result[0].productionName, result.Result[0].productionName); Assert.Equal(expectedResult.Result[0].productionCode, result.Result[0].productionCode); } /// /// 测试获取工单详情 /// [Fact] public void GetInfo_ShouldReturnWorkorder() { // Arrange var workorderId = "1"; var expectedWorkorder = new ProWorkorder { Id = workorderId, productionName = "测试产品", productionCode = "TEST001" }; _mockQueryService.Setup(x => x.GetInfo(It.IsAny())) .Returns(expectedWorkorder); // Act var result = _queryService.GetInfo(workorderId); // Assert Assert.NotNull(result); Assert.Equal(expectedWorkorder.Id, result.Id); Assert.Equal(expectedWorkorder.productionName, result.productionName); Assert.Equal(expectedWorkorder.productionCode, result.productionCode); } /// /// 测试获取工单进度跟踪列表 /// [Fact] public void GetWorkorderTraceProgressList_ShouldReturnPagedProgress() { // Arrange var queryDto = new ProWorkorderQueryDto { productionName = "测试产品" }; var expectedResult = new PagedInfo { Total = 1, Result = new List { new ProWorkorderTranceProgressDto { productionName = "测试产品" } } }; _mockQueryService.Setup(x => x.GetWorkorderTraceProgressList(It.IsAny())) .Returns(expectedResult); // Act var result = _queryService.GetWorkorderTraceProgressList(queryDto); // Assert Assert.NotNull(result); Assert.Equal(expectedResult.Total, result.Total); Assert.Single(result.Result); Assert.Equal(expectedResult.Result[0].productionName, result.Result[0].productionName); } /// /// 测试查询BOM及其所需数量 /// [Fact] public void SearchBOMNum_ShouldReturnBomList() { // Arrange var workorderNum = "WO001"; var expectedResult = new List { new WorkOrderBom { PartId = "1", PartName = "测试部件" } }; _mockQueryService.Setup(x => x.SearchBOMNum(It.IsAny())) .Returns(expectedResult); // Act var result = _queryService.SearchBOMNum(workorderNum); // Assert Assert.NotNull(result); Assert.Single(result); Assert.Equal(expectedResult[0].PartId, result[0].PartId); Assert.Equal(expectedResult[0].PartName, result[0].PartName); } } }