完成编辑变量表的单元测试
This commit is contained in:
@@ -10,7 +10,7 @@ namespace DMS.Application.Interfaces
|
||||
Task<VariableTableDto> GetVariableTableByIdAsync(int id);
|
||||
Task<List<VariableTableDto>> GetAllVariableTablesAsync();
|
||||
Task<VariableTableDto> CreateVariableTableAsync(CreateVariableTableWithMenuDto createDto);
|
||||
Task UpdateVariableTableAsync(VariableTableDto variableTableDto);
|
||||
Task<int> UpdateVariableTableAsync(VariableTableDto variableTableDto);
|
||||
Task<bool> DeleteVariableTableAsync(int id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,11 +106,30 @@ namespace DMS.Application.Services
|
||||
/// 异步更新变量表。
|
||||
/// </summary>
|
||||
/// <param name="variableTableDto">要更新的变量表数据传输对象。</param>
|
||||
/// <returns>表示异步操作的任务。</returns>
|
||||
public async Task UpdateVariableTableAsync(VariableTableDto variableTableDto)
|
||||
/// <returns>受影响的行数。</returns>
|
||||
/// <exception cref="ApplicationException">如果找不到变量表。</exception>
|
||||
public async Task<int> UpdateVariableTableAsync(VariableTableDto variableTableDto)
|
||||
{
|
||||
var variableTable = _mapper.Map<VariableTable>(variableTableDto);
|
||||
await _repositoryManager.VariableTables.UpdateAsync(variableTable);
|
||||
try
|
||||
{
|
||||
await _repositoryManager.BeginTranAsync();
|
||||
var variableTable = await _repositoryManager.VariableTables.GetByIdAsync(variableTableDto.Id);
|
||||
if (variableTable == null)
|
||||
{
|
||||
throw new ApplicationException($"VariableTable with ID {variableTableDto.Id} not found.");
|
||||
}
|
||||
|
||||
_mapper.Map(variableTableDto, variableTable);
|
||||
int res = await _repositoryManager.VariableTables.UpdateAsync(variableTable);
|
||||
await _repositoryManager.CommitAsync();
|
||||
return res;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await _repositoryManager.RollbackAsync();
|
||||
// 可以在此记录日志
|
||||
throw new ApplicationException($"更新变量表时发生错误,操作已回滚,错误信息:{ex.Message}", ex);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -52,4 +52,34 @@ public class VariableTableAppServiceTest : BaseServiceTest
|
||||
var deletedTable = await _variableTableAppService.GetVariableTableByIdAsync(createdVariableTable.Id);
|
||||
Assert.Null(deletedTable);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task UpdateVariableTableAsyncTest()
|
||||
{
|
||||
// Arrange: Create a variable table first
|
||||
var createDto = new CreateVariableTableWithMenuDto()
|
||||
{
|
||||
VariableTable = FakerHelper.FakeVariableTableDto(),
|
||||
Menu = FakerHelper.FakeCreateMenuDto(),
|
||||
DeviceId = 5 // Assuming a device with ID 5 exists for testing
|
||||
};
|
||||
var createdVariableTable = await _variableTableAppService.CreateVariableTableAsync(createDto);
|
||||
Assert.NotEqual(createdVariableTable.Id, 0);
|
||||
|
||||
// Modify some properties of the DTO
|
||||
createdVariableTable.Name = "Updated Variable Table Name";
|
||||
createdVariableTable.Description = "This is an updated description.";
|
||||
|
||||
// Act: Update the variable table
|
||||
var affectedRows = await _variableTableAppService.UpdateVariableTableAsync(createdVariableTable);
|
||||
|
||||
// Assert: Verify update was successful
|
||||
Assert.Equal(1, affectedRows);
|
||||
|
||||
// Retrieve the updated variable table to confirm changes
|
||||
var updatedTable = await _variableTableAppService.GetVariableTableByIdAsync(createdVariableTable.Id);
|
||||
Assert.NotNull(updatedTable);
|
||||
Assert.Equal("Updated Variable Table Name", updatedTable.Name);
|
||||
Assert.Equal("This is an updated description.", updatedTable.Description);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user