using System.Collections.Generic;
using CncModels.Dto;
using CncModels.Dto.CollectAddress;
using CncService;
using CncWebApi.Controllers;
using Xunit;
namespace CncWebApi.Tests
{
///
/// CollectAddressController单元测试
/// 采集地址CRUD + 启停
///
[Collection("Database")]
public class CollectAddressControllerTests
{
private readonly CollectAddressController _controller;
public CollectAddressControllerTests()
{
TestDb.TruncateAll();
_controller = ControllerFactory.CreateCollectAddressController();
}
///
/// 辅助:创建地址请求
///
private CreateCollectAddressRequest CreateRequest(string name = "地址1", string url = "http://192.168.1.1") => new CreateCollectAddressRequest
{
Name = name,
Url = url,
BrandId = 1,
CollectInterval = 5
};
#region GetList - 地址列表
///
/// 测试:空数据库返回空列表
///
[Fact]
public void GetList_EmptyDb_ShouldReturnEmpty()
{
var result = _controller.GetList(new CollectAddressQuery());
var response = ControllerFactory.Extract>(result);
ControllerFactory.AssertSuccess(response);
Assert.Empty(response.Data.Items);
}
///
/// 测试:新增后列表有数据
///
[Fact]
public void GetList_AfterCreate_ShouldReturnOne()
{
_controller.Create(CreateRequest());
var result = _controller.GetList(new CollectAddressQuery());
var response = ControllerFactory.Extract>(result);
Assert.Single(response.Data.Items);
}
#endregion
#region GetById - 地址详情
///
/// 测试:获取地址详情成功
///
[Fact]
public void GetById_Existing_ShouldReturnDetail()
{
_controller.Create(CreateRequest());
int id = TestDb.QuerySingle("SELECT MAX(id) FROM cnc_collect_address");
var result = _controller.GetById(id);
var response = ControllerFactory.Extract(result);
ControllerFactory.AssertSuccess(response);
Assert.Equal("地址1", response.Data.Name);
}
///
/// 测试:不存在的地址抛出异常
///
[Fact]
public void GetById_NotExisting_ShouldThrow()
{
Assert.Throws(() => _controller.GetById(999));
}
#endregion
#region Create - 新增地址
///
/// 测试:新增地址成功
///
[Fact]
public void Create_ValidRequest_ShouldReturnId()
{
var result = _controller.Create(CreateRequest());
var response = ControllerFactory.Extract