using System;
using CncModels.Dto;
using CncModels.Dto.Log;
using CncModels.Entity;
using CncWebApi.Controllers;
using Xunit;
namespace CncWebApi.Tests
{
///
/// LogController单元测试
/// 系统日志 + 产量修正日志
///
[Collection("Database")]
public class LogControllerTests
{
private readonly LogController _controller;
public LogControllerTests()
{
TestDb.TruncateAll();
_controller = ControllerFactory.CreateLogController();
}
#region GetSystemLog - 系统日志
///
/// 测试:空数据库返回空列表
///
[Fact]
public void GetSystemLog_EmptyDb_ShouldReturnEmpty()
{
var result = _controller.GetSystemLog(new SystemLogQuery());
var response = ControllerFactory.Extract>(result);
ControllerFactory.AssertSuccess(response);
Assert.Empty(response.Data.Items);
}
///
/// 测试:有日志数据时返回列表
///
[Fact]
public void GetSystemLog_WithData_ShouldReturnItems()
{
TestDb.Execute(@"INSERT INTO log_system (log_level, source, message, created_at)
VALUES ('INFO', '测试模块', '测试内容', NOW())");
var result = _controller.GetSystemLog(new SystemLogQuery());
var response = ControllerFactory.Extract>(result);
Assert.NotEmpty(response.Data.Items);
}
#endregion
#region GetAdjustmentLog - 产量修正日志
///
/// 测试:空数据库返回空列表
///
[Fact]
public void GetAdjustmentLog_EmptyDb_ShouldReturnEmpty()
{
var result = _controller.GetAdjustmentLog(null, null, null, null, 1, 20);
var response = ControllerFactory.Extract>(result);
ControllerFactory.AssertSuccess(response);
Assert.Empty(response.Data.Items);
}
///
/// 测试:有修正日志时返回列表
///
[Fact]
public void GetAdjustmentLog_WithData_ShouldReturnItems()
{
TestDb.Execute(@"INSERT INTO cnc_production_adjustment (target_table, target_id, field_name, old_value, new_value, reason, created_at)
VALUES ('cnc_daily_production', 1, 'total_quantity', 100, 200, '测试修正', NOW())");
var result = _controller.GetAdjustmentLog(null, null, null, null, 1, 20);
var response = ControllerFactory.Extract>(result);
Assert.NotEmpty(response.Data.Items);
}
#endregion
}
}