using System;
using CncModels.Constants;
using CncModels.Entity;
using CncService;
using CncService.Impl;
using Xunit;
namespace CncService.Tests
{
///
/// ScreenService 大屏配置测试
/// 测试场景:获取/更新配置、筛选CRUD、汇总数据、参数校验
///
[Collection("Database")]
public class ScreenServiceTests : IDisposable
{
private readonly ScreenService _service;
public ScreenServiceTests()
{
TestDb.TruncateAll();
_service = ServiceFactory.CreateScreenService();
}
public void Dispose()
{
TestDb.TruncateAll();
}
// ======== GetSummary ========
[Fact]
public void GetSummary_返回默认汇总()
{
var summary = _service.GetSummary();
Assert.NotNull(summary);
Assert.Equal(0, summary.MachineCount);
Assert.Equal(0, summary.ProductionToday);
Assert.Equal(0, summary.AlertCount);
Assert.Equal(0, summary.OnlineCount);
}
// ======== GetConfigs ========
[Fact]
public void GetConfigs_无数据_返回空列表()
{
var configs = _service.GetConfigs();
Assert.NotNull(configs);
}
// ======== UpdateConfig ========
[Fact]
public void UpdateConfig_请求为null_抛出BadRequest异常()
{
var ex = Assert.Throws(() => _service.UpdateConfig(null));
Assert.Equal(ErrorCode.BadRequest, ex.Code);
}
// ======== GetFilters ========
[Fact]
public void GetFilters_screenKey为空_抛出BadRequest异常()
{
var ex = Assert.Throws(() => _service.GetFilters(""));
Assert.Equal(ErrorCode.BadRequest, ex.Code);
}
[Fact]
public void GetFilters_screenKey为null_抛出BadRequest异常()
{
var ex = Assert.Throws(() => _service.GetFilters(null));
Assert.Equal(ErrorCode.BadRequest, ex.Code);
}
[Fact]
public void GetFilters_screenKey为空格_抛出BadRequest异常()
{
var ex = Assert.Throws(() => _service.GetFilters(" "));
Assert.Equal(ErrorCode.BadRequest, ex.Code);
}
[Fact]
public void GetFilters_存在的screenKey_返回列表()
{
// 先插入筛选数据
TestDb.Execute(@"INSERT INTO cnc_screen_filter (screen_key, filter_type, filter_value, is_default, sort_order)
VALUES ('dashboard', 'workshop', '1', 1, 1)");
var filters = _service.GetFilters("dashboard");
Assert.NotNull(filters);
Assert.True(filters.Count >= 1);
}
// ======== CreateFilter ========
[Fact]
public void CreateFilter_正常创建_返回自增ID()
{
var id = _service.CreateFilter(new ScreenFilter
{
ScreenKey = "dashboard",
FilterType = "workshop",
FilterValue = "1",
IsDefault = 1,
SortOrder = 1
});
Assert.True(id > 0);
}
[Fact]
public void CreateFilter_请求为null_抛出BadRequest异常()
{
var ex = Assert.Throws(() => _service.CreateFilter(null));
Assert.Equal(ErrorCode.BadRequest, ex.Code);
}
// ======== UpdateFilter ========
[Fact]
public void UpdateFilter_请求为null_抛出BadRequest异常()
{
var ex = Assert.Throws(() => _service.UpdateFilter(null));
Assert.Equal(ErrorCode.BadRequest, ex.Code);
}
// ======== DeleteFilter ========
[Fact]
public void DeleteFilter_无效ID_抛出BadRequest异常()
{
var ex = Assert.Throws(() => _service.DeleteFilter(0));
Assert.Equal(ErrorCode.BadRequest, ex.Code);
}
[Fact]
public void DeleteFilter_负数ID_抛出BadRequest异常()
{
var ex = Assert.Throws(() => _service.DeleteFilter(-1));
Assert.Equal(ErrorCode.BadRequest, ex.Code);
}
[Fact]
public void DeleteFilter_存在的ID_返回true()
{
var id = _service.CreateFilter(new ScreenFilter
{
ScreenKey = "dashboard",
FilterType = "workshop",
FilterValue = "1",
IsDefault = 1,
SortOrder = 1
});
var result = _service.DeleteFilter(id);
Assert.True(result);
}
}
}