完成更新设备的测试
This commit is contained in:
@@ -8,12 +8,12 @@ namespace DMS.Application.DTOs;
|
|||||||
public class UpdateDeviceDto
|
public class UpdateDeviceDto
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
public string Name { get; set; }
|
public string? Name { get; set; }
|
||||||
public ProtocolType Protocol { get; set; }
|
public ProtocolType? Protocol { get; set; }
|
||||||
public string IpAddress { get; set; }
|
public string? IpAddress { get; set; }
|
||||||
public int Port { get; set; }
|
public int? Port { get; set; }
|
||||||
public int Rack { get; set; }
|
public int? Rack { get; set; }
|
||||||
public int Slot { get; set; }
|
public int? Slot { get; set; }
|
||||||
public string OpcUaServerUrl { get; set; }
|
public string? OpcUaServerUrl { get; set; }
|
||||||
public bool IsActive { get; set; }
|
public bool? IsActive { get; set; }
|
||||||
}
|
}
|
||||||
@@ -29,7 +29,7 @@ public interface IDeviceAppService
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 异步更新一个已存在的设备。
|
/// 异步更新一个已存在的设备。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Task UpdateDeviceAsync(UpdateDeviceDto deviceDto);
|
Task<int> UpdateDeviceAsync(UpdateDeviceDto deviceDto);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 异步删除一个设备。
|
/// 异步删除一个设备。
|
||||||
|
|||||||
@@ -17,10 +17,22 @@ public class MappingProfile : Profile
|
|||||||
.ForMember(dest => dest.VariableTables, opt => opt.Ignore());
|
.ForMember(dest => dest.VariableTables, opt => opt.Ignore());
|
||||||
|
|
||||||
CreateMap<UpdateDeviceDto, Device>()
|
CreateMap<UpdateDeviceDto, Device>()
|
||||||
|
// 1. 首先,忽略那些永远不应从DTO更新的属性
|
||||||
|
.ForMember(dest => dest.Id, opt => opt.Ignore())
|
||||||
.ForMember(dest => dest.Description, opt => opt.Ignore())
|
.ForMember(dest => dest.Description, opt => opt.Ignore())
|
||||||
.ForMember(dest => dest.VariableTables, opt => opt.Ignore())
|
.ForMember(dest => dest.VariableTables, opt => opt.Ignore())
|
||||||
.ForMember(dest => dest.CpuType, opt => opt.Ignore())
|
.ForMember(dest => dest.CpuType, opt => opt.Ignore())
|
||||||
.ForMember(dest => dest.DeviceType, opt => opt.Ignore());
|
.ForMember(dest => dest.DeviceType, opt => opt.Ignore())
|
||||||
|
|
||||||
|
// 2. 然后,为每个可空属性单独设置条件
|
||||||
|
.ForMember(dest => dest.Name, opt => opt.Condition(src => src.Name != null))
|
||||||
|
.ForMember(dest => dest.Protocol, opt => opt.Condition(src => src.Protocol.HasValue))
|
||||||
|
.ForMember(dest => dest.IpAddress, opt => opt.Condition(src => src.IpAddress != null))
|
||||||
|
.ForMember(dest => dest.Port, opt => opt.Condition(src => src.Port.HasValue))
|
||||||
|
.ForMember(dest => dest.Rack, opt => opt.Condition(src => src.Rack.HasValue))
|
||||||
|
.ForMember(dest => dest.Slot, opt => opt.Condition(src => src.Slot.HasValue))
|
||||||
|
.ForMember(dest => dest.OpcUaServerUrl, opt => opt.Condition(src => src.OpcUaServerUrl != null))
|
||||||
|
.ForMember(dest => dest.IsActive, opt => opt.Condition(src => src.IsActive.HasValue));
|
||||||
|
|
||||||
CreateMap<Device, DeviceDto>()
|
CreateMap<Device, DeviceDto>()
|
||||||
.ForMember(dest => dest.Protocol, opt => opt.MapFrom(src => src.Protocol.ToString()))
|
.ForMember(dest => dest.Protocol, opt => opt.MapFrom(src => src.Protocol.ToString()))
|
||||||
|
|||||||
@@ -119,8 +119,9 @@ public class DeviceService : IDeviceAppService
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 异步更新一个已存在的设备。
|
/// 异步更新一个已存在的设备。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public async Task UpdateDeviceAsync(UpdateDeviceDto deviceDto)
|
public async Task<int> UpdateDeviceAsync(UpdateDeviceDto deviceDto)
|
||||||
{
|
{
|
||||||
|
await _repoManager.BeginTranAsync();
|
||||||
var device = await _repoManager.Devices.GetByIdAsync(deviceDto.Id);
|
var device = await _repoManager.Devices.GetByIdAsync(deviceDto.Id);
|
||||||
if (device == null)
|
if (device == null)
|
||||||
{
|
{
|
||||||
@@ -128,8 +129,9 @@ public class DeviceService : IDeviceAppService
|
|||||||
}
|
}
|
||||||
|
|
||||||
_mapper.Map(deviceDto, device);
|
_mapper.Map(deviceDto, device);
|
||||||
await _repoManager.Devices.UpdateAsync(device);
|
int res=await _repoManager.Devices.UpdateAsync(device);
|
||||||
await _repoManager.CommitAsync();
|
await _repoManager.CommitAsync();
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -48,4 +48,20 @@ public class DeviceServiceTest : BaseServiceTest // 继承基类
|
|||||||
// Assert
|
// Assert
|
||||||
Assert.Equal(isSuccess,true);
|
Assert.Equal(isSuccess,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task UpdateDeviceAsyncTest()
|
||||||
|
{
|
||||||
|
UpdateDeviceDto dto = new UpdateDeviceDto()
|
||||||
|
{
|
||||||
|
Id = 5,
|
||||||
|
Name = "lalala",
|
||||||
|
IsActive = true,
|
||||||
|
Rack = 0,
|
||||||
|
Slot = 0
|
||||||
|
|
||||||
|
};
|
||||||
|
var res = await _deviceService.UpdateDeviceAsync(dto);
|
||||||
|
Assert.NotEqual(res,0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user