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);
}
}
}