完成编辑变量表的单元测试
This commit is contained in:
@@ -10,7 +10,7 @@ namespace DMS.Application.Interfaces
|
|||||||
Task<VariableTableDto> GetVariableTableByIdAsync(int id);
|
Task<VariableTableDto> GetVariableTableByIdAsync(int id);
|
||||||
Task<List<VariableTableDto>> GetAllVariableTablesAsync();
|
Task<List<VariableTableDto>> GetAllVariableTablesAsync();
|
||||||
Task<VariableTableDto> CreateVariableTableAsync(CreateVariableTableWithMenuDto createDto);
|
Task<VariableTableDto> CreateVariableTableAsync(CreateVariableTableWithMenuDto createDto);
|
||||||
Task UpdateVariableTableAsync(VariableTableDto variableTableDto);
|
Task<int> UpdateVariableTableAsync(VariableTableDto variableTableDto);
|
||||||
Task<bool> DeleteVariableTableAsync(int id);
|
Task<bool> DeleteVariableTableAsync(int id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,11 +106,30 @@ namespace DMS.Application.Services
|
|||||||
/// 异步更新变量表。
|
/// 异步更新变量表。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="variableTableDto">要更新的变量表数据传输对象。</param>
|
/// <param name="variableTableDto">要更新的变量表数据传输对象。</param>
|
||||||
/// <returns>表示异步操作的任务。</returns>
|
/// <returns>受影响的行数。</returns>
|
||||||
public async Task UpdateVariableTableAsync(VariableTableDto variableTableDto)
|
/// <exception cref="ApplicationException">如果找不到变量表。</exception>
|
||||||
|
public async Task<int> UpdateVariableTableAsync(VariableTableDto variableTableDto)
|
||||||
{
|
{
|
||||||
var variableTable = _mapper.Map<VariableTable>(variableTableDto);
|
try
|
||||||
await _repositoryManager.VariableTables.UpdateAsync(variableTable);
|
{
|
||||||
|
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>
|
/// <summary>
|
||||||
|
|||||||
@@ -52,4 +52,34 @@ public class VariableTableAppServiceTest : BaseServiceTest
|
|||||||
var deletedTable = await _variableTableAppService.GetVariableTableByIdAsync(createdVariableTable.Id);
|
var deletedTable = await _variableTableAppService.GetVariableTableByIdAsync(createdVariableTable.Id);
|
||||||
Assert.Null(deletedTable);
|
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