添加 BrandFieldMappingRepositoryTests 测试用例; 扩展 BrandServiceTests/BrandControllerTests 的测试覆盖 IsEnabled 字段

feat/windows-service-status-auto
haoliang 14 hours ago
parent 78b7dfea19
commit 089f3e502a

@ -0,0 +1,117 @@
using System;
using System.Linq;
using CncModels.Entity;
using CncRepository.Impl;
using Xunit;
namespace CncRepository.Tests
{
/// <summary>
/// 品牌字段映射仓储测试
/// </summary>
[Collection("Database")]
public class BrandFieldMappingRepositoryTests : IDisposable
{
private readonly BrandFieldMappingRepository _repo;
public BrandFieldMappingRepositoryTests()
{
_repo = new BrandFieldMappingRepository(TestDb.ConnectionString);
TestDb.TruncateAll();
}
public void Dispose()
{
TestDb.TruncateAll();
}
[Fact]
public void GetByBrandId_()
{
// 插入2条启用 + 1条禁用
TestDb.Execute(@"INSERT INTO cnc_brand_field_mapping (brand_id, standard_field, field_name, match_by, data_type, is_required, is_enabled, created_at)
VALUES (1, 'program_name', 'Tag5', 'id', 'string', 1, 1, NOW()),
(1, 'part_count', 'Tag8', 'id', 'number', 1, 1, NOW()),
(1, 'spindle_load', 'Tag21', 'id', 'number', 0, 0, NOW())");
var result = _repo.GetByBrandId(1);
Assert.Equal(3, result.Count);
}
[Fact]
public void GetEnabledByBrandId_()
{
TestDb.Execute(@"INSERT INTO cnc_brand_field_mapping (brand_id, standard_field, field_name, match_by, data_type, is_required, is_enabled, created_at)
VALUES (1, 'program_name', 'Tag5', 'id', 'string', 1, 1, NOW()),
(1, 'part_count', 'Tag8', 'id', 'number', 1, 1, NOW()),
(1, 'spindle_load', 'Tag21', 'id', 'number', 0, 0, NOW())");
var result = _repo.GetEnabledByBrandId(1);
Assert.Equal(2, result.Count);
Assert.All(result, m => Assert.Equal(1, m.IsEnabled));
}
[Fact]
public void Create_()
{
var entity = new BrandFieldMapping
{
BrandId = 1,
StandardField = "program_name",
FieldName = "Tag5",
MatchBy = "id",
DataType = "string",
IsRequired = 1,
IsEnabled = 1,
CreatedAt = DateTime.Now
};
var id = _repo.Create(entity);
Assert.True(id > 0);
var loaded = _repo.GetById(id);
Assert.Equal(1, loaded.IsEnabled);
}
[Fact]
public void Update_()
{
TestDb.Execute(@"INSERT INTO cnc_brand_field_mapping (brand_id, standard_field, field_name, match_by, data_type, is_required, is_enabled, created_at)
VALUES (1, 'program_name', 'Tag5', 'id', 'string', 1, 1, NOW())");
var id = TestDb.QuerySingle<int>("SELECT MAX(id) FROM cnc_brand_field_mapping");
var entity = _repo.GetById(id);
entity.IsEnabled = 0;
var result = _repo.Update(entity);
Assert.True(result);
Assert.Equal(0, _repo.GetById(id).IsEnabled);
}
[Fact]
public void BatchCreate_()
{
var mappings = new[]
{
new BrandFieldMapping { StandardField = "f1", FieldName = "Tag1", MatchBy = "id", DataType = "string", IsRequired = 0, IsEnabled = 1, CreatedAt = DateTime.Now },
new BrandFieldMapping { StandardField = "f2", FieldName = "Tag2", MatchBy = "id", DataType = "number", IsRequired = 0, IsEnabled = 1, CreatedAt = DateTime.Now },
new BrandFieldMapping { StandardField = "f3", FieldName = "Tag3", MatchBy = "id", DataType = "string", IsRequired = 0, IsEnabled = 0, CreatedAt = DateTime.Now },
}.ToList();
var count = _repo.BatchCreate(1, mappings);
Assert.Equal(3, count);
var all = _repo.GetByBrandId(1);
Assert.Equal(3, all.Count);
var enabled = _repo.GetEnabledByBrandId(1);
Assert.Equal(2, enabled.Count);
}
[Fact]
public void Update_()
{
TestDb.Execute(@"INSERT INTO cnc_brand_field_mapping (brand_id, standard_field, field_name, match_by, data_type, is_required, is_enabled, created_at)
VALUES (1, 'program_name', 'Tag5', 'id', 'string', 1, 1, NOW())");
var id = TestDb.QuerySingle<int>("SELECT MAX(id) FROM cnc_brand_field_mapping");
var entity = _repo.GetById(id);
entity.FieldName = "Tag5_New";
entity.IsEnabled = 0;
_repo.Update(entity);
var loaded = _repo.GetById(id);
Assert.Equal("Tag5_New", loaded.FieldName);
Assert.Equal(0, loaded.IsEnabled);
}
}
}

@ -248,6 +248,51 @@ namespace CncService.Tests
Assert.Equal(ErrorCode.NotFound, ex.Code);
}
// ======== FieldMapping IsEnabled ========
[Fact]
public void GetById_IsEnabled()
{
// 插入字段映射(含 is_enabled=0 的)
TestDb.Execute(@"INSERT INTO cnc_brand_field_mapping (brand_id, standard_field, field_name, match_by, data_type, is_required, is_enabled, created_at)
VALUES (1, 'program_name', 'Tag5', 'id', 'string', 1, 1, NOW()),
(1, 'spindle_load', 'Tag21', 'id', 'number', 0, 0, NOW())");
var detail = _service.GetById(1);
Assert.NotNull(detail.Mappings);
Assert.Equal(2, detail.Mappings.Count);
var disabled = detail.Mappings.FirstOrDefault(m => m.StandardField == "spindle_load");
Assert.NotNull(disabled);
Assert.Equal(0, disabled.IsEnabled);
}
[Fact]
public void Copy_()
{
// 插入字段映射1启用1禁用
TestDb.Execute(@"INSERT INTO cnc_brand_field_mapping (brand_id, standard_field, field_name, match_by, data_type, is_required, is_enabled, created_at)
VALUES (1, 'program_name', 'Tag5', 'id', 'string', 1, 1, NOW()),
(1, 'spindle_load', 'Tag21', 'id', 'number', 0, 0, NOW())");
var newId = _service.Copy(1);
var copied = _service.GetById(newId);
Assert.Equal(2, copied.Mappings.Count);
var enabledMapping = copied.Mappings.First(m => m.StandardField == "program_name");
var disabledMapping = copied.Mappings.First(m => m.StandardField == "spindle_load");
Assert.Equal(1, enabledMapping.IsEnabled);
Assert.Equal(0, disabledMapping.IsEnabled);
}
[Fact]
public void GetById_()
{
TestDb.Execute(@"INSERT INTO cnc_brand_field_mapping (brand_id, standard_field, field_name, match_by, data_type, is_required, is_enabled, created_at)
VALUES (1, 'f1', 'Tag1', 'id', 'string', 0, 0, NOW()),
(1, 'f2', 'Tag2', 'id', 'string', 0, 1, NOW()),
(1, 'f3', 'Tag3', 'id', 'string', 0, 1, NOW())");
var detail = _service.GetById(1);
Assert.Equal(3, detail.Mappings.Count);
Assert.Equal(1, detail.Mappings.Count(m => m.IsEnabled == 0));
Assert.Equal(2, detail.Mappings.Count(m => m.IsEnabled == 1));
}
// ======== GetStandardFields ========
[Fact]

@ -281,6 +281,49 @@ namespace CncWebApi.Tests
#endregion
// region FieldMapping IsEnabled - 字段映射启用开关
#region FieldMapping IsEnabled - 字段映射启用开关
/// <summary>
/// 测试获取品牌详情时映射响应包含IsEnabled
/// </summary>
[Fact]
public void GetById_IsEnabled()
{
// 插入字段映射
TestDb.Execute(@"INSERT INTO cnc_brand_field_mapping (brand_id, standard_field, field_name, match_by, data_type, is_required, is_enabled, created_at)
VALUES (1, 'program_name', 'Tag5', 'id', 'string', 1, 1, NOW()),
(1, 'spindle_load', 'Tag21', 'id', 'number', 0, 0, NOW())");
var result = _controller.GetById(1);
var response = ControllerFactory.Extract<BrandDetailResponse>(result);
ControllerFactory.AssertSuccess(response);
Assert.Equal(2, response.Data.Mappings.Count);
var disabled = response.Data.Mappings.First(m => m.StandardField == "spindle_load");
Assert.Equal(0, disabled.IsEnabled);
}
/// <summary>
/// 测试:复制品牌后映射启用状态一致
/// </summary>
[Fact]
public void Copy_()
{
TestDb.Execute(@"INSERT INTO cnc_brand_field_mapping (brand_id, standard_field, field_name, match_by, data_type, is_required, is_enabled, created_at)
VALUES (1, 'program_name', 'Tag5', 'id', 'string', 1, 1, NOW()),
(1, 'spindle_load', 'Tag21', 'id', 'number', 0, 0, NOW())");
var copyResult = _controller.Copy(1);
var copyResponse = ControllerFactory.Extract<object>(copyResult);
ControllerFactory.AssertSuccess(copyResponse);
int newId = TestDb.QuerySingle<int>("SELECT MAX(id) FROM cnc_brand WHERE id <> 1");
var detail = ControllerFactory.Extract<BrandDetailResponse>(_controller.GetById(newId));
Assert.Equal(2, detail.Data.Mappings.Count);
var enabledMapping = detail.Data.Mappings.First(m => m.StandardField == "program_name");
var disabledMapping = detail.Data.Mappings.First(m => m.StandardField == "spindle_load");
Assert.Equal(1, enabledMapping.IsEnabled);
Assert.Equal(0, disabledMapping.IsEnabled);
}
#endregion
#region GetStandardFields - 标准字段列表
/// <summary>

Loading…
Cancel
Save