using System;
using CncModels.Dto;
using CncModels.Dto.Production;
using CncWebApi.Controllers;
using Xunit;
namespace CncWebApi.Tests
{
///
/// ProductionController单元测试
/// 产量报表:日产量列表 + 日汇总 + 修正产量
///
[Collection("Database")]
public class ProductionControllerTests
{
private readonly ProductionController _controller;
public ProductionControllerTests()
{
TestDb.TruncateAll();
_controller = ControllerFactory.CreateProductionController();
}
#region GetList - 日产量列表
///
/// 测试:空数据库返回空列表
///
[Fact]
public void GetList_EmptyDb_ShouldReturnEmpty()
{
var result = _controller.GetList(new ProductionQuery());
var response = ControllerFactory.Extract>(result);
ControllerFactory.AssertSuccess(response);
Assert.Empty(response.Data.Items);
}
///
/// 测试:有数据时返回产量列表
///
[Fact]
public void GetList_WithData_ShouldReturnItems()
{
PrepareProductionData();
var result = _controller.GetList(new ProductionQuery());
var response = ControllerFactory.Extract>(result);
ControllerFactory.AssertSuccess(response);
Assert.NotEmpty(response.Data.Items);
}
#endregion
#region GetSummary - 日汇总统计
///
/// 测试:获取日汇总统计
///
[Fact]
public void GetSummary_ShouldReturnSummary()
{
PrepareProductionData();
var result = _controller.GetSummary(DateTime.Today, null);
var response = ControllerFactory.Extract(result);
ControllerFactory.AssertSuccess(response);
Assert.NotNull(response.Data);
}
///
/// 测试:无数据时日汇总仍能返回
///
[Fact]
public void GetSummary_NoData_ShouldReturnDefault()
{
var result = _controller.GetSummary(null, null);
var response = ControllerFactory.Extract(result);
ControllerFactory.AssertSuccess(response);
}
#endregion
#region Adjust - 修正产量
///
/// 测试:修正产量成功
///
[Fact]
public void Adjust_ValidRequest_ShouldSuccess()
{
PrepareProductionData();
int prodId = TestDb.QuerySingle("SELECT MAX(id) FROM cnc_daily_production");
var result = _controller.Adjust(new ProductionAdjustRequest
{
TargetTable = "cnc_daily_production",
TargetId = prodId,
FieldName = "total_quantity",
NewValue = "200",
Reason = "测试修正"
});
ControllerFactory.AssertSuccess(ControllerFactory.Extract