You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
haoliang-net/tests/CncRepository.Tests/MachineRepositoryTests.cs

138 lines
4.2 KiB
C#

using System;
using System.Linq;
using CncModels.Dto;
using CncModels.Dto.Machine;
using CncModels.Entity;
using CncRepository.Impl;
using Xunit;
namespace CncRepository.Tests
{
/// <summary>
/// 机床仓储测试
/// </summary>
[Collection("Database")]
public class MachineRepositoryTests : IDisposable
{
private readonly MachineRepository _repo;
public MachineRepositoryTests()
{
_repo = new MachineRepository(TestDb.ConnectionString);
TestDb.TruncateAll();
// 插入一个采集地址供机床引用
TestDb.Execute(@"INSERT INTO cnc_collect_address (id, name, url, brand_id, collect_interval, is_enabled, created_at, updated_at)
VALUES (1, '测试地址', 'http://10.1.1.1/', 1, 30, 1, NOW(), NOW())");
}
public void Dispose()
{
TestDb.TruncateAll();
}
private Machine CreateTestMachine(string deviceCode = "TEST_001")
{
return new Machine
{
DeviceCode = deviceCode,
Name = "测试机床",
WorkshopId = 1,
CollectAddressId = 1,
BrandId = 1,
IpAddress = "10.1.1.8",
IsEnabled = 1,
CreatedAt = DateTime.Now,
UpdatedAt = DateTime.Now
};
}
[Fact]
public void Create__ID()
{
var entity = CreateTestMachine();
var id = _repo.Create(entity);
Assert.True(id > 0);
}
[Fact]
public void GetById_ID_()
{
var id = _repo.Create(CreateTestMachine());
var result = _repo.GetById(id);
Assert.NotNull(result);
Assert.Equal("TEST_001", result.DeviceCode);
Assert.Equal("测试机床", result.Name);
}
[Fact]
public void GetById_ID_null()
{
var result = _repo.GetById(99999);
Assert.Null(result);
}
[Fact]
public void GetByDeviceCode__()
{
_repo.Create(CreateTestMachine("UNIQUE_CODE"));
var result = _repo.GetByDeviceCode("UNIQUE_CODE");
Assert.NotNull(result);
Assert.Equal("UNIQUE_CODE", result.DeviceCode);
}
[Fact]
public void GetList__()
{
// 插入几条数据
for (int i = 1; i <= 3; i++)
{
_repo.Create(CreateTestMachine($"CODE_{i:D3}"));
}
var query = new MachineQuery { Page = 1, PageSize = 2 };
var result = _repo.GetList(query);
Assert.True(result.Total >= 3);
Assert.True(result.Items.Count <= 2);
}
[Fact]
public void Update__true()
{
var id = _repo.Create(CreateTestMachine());
var entity = _repo.GetById(id);
entity.Name = "修改后";
entity.UpdatedAt = DateTime.Now;
var result = _repo.Update(entity);
Assert.True(result);
Assert.Equal("修改后", _repo.GetById(id).Name);
}
[Fact]
public void Delete_ID_true()
{
var id = _repo.Create(CreateTestMachine("DEL_001"));
var result = _repo.Delete(id);
Assert.True(result);
Assert.Null(_repo.GetById(id));
}
[Fact]
public void ToggleEnabled_()
{
var id = _repo.Create(CreateTestMachine());
var before = _repo.GetById(id).IsEnabled;
_repo.ToggleEnabled(id);
var after = _repo.GetById(id).IsEnabled;
Assert.NotEqual(before, after);
}
[Fact]
public void GetEnabledByAddressId_()
{
_repo.Create(CreateTestMachine("ADDR_001"));
var result = _repo.GetEnabledByAddressId(1);
Assert.NotNull(result);
Assert.True(result.Count > 0);
}
}
}