Аудит: читаемые имена и «было → стало» вместо сырых данных #28
@@ -183,11 +183,12 @@ public static class AuditRecordDtoExtensions
|
|||||||
|
|
||||||
// Приводит значение JSON к строке отображения.
|
// Приводит значение JSON к строке отображения.
|
||||||
// element: Значение JSON.
|
// element: Значение JSON.
|
||||||
// Возвращает: Строковое представление либо null для JSON null.
|
// Возвращает: Строковое представление либо null для JSON null; массивы — списком через запятую.
|
||||||
private static string? Stringify(JsonElement element) => element.ValueKind switch
|
private static string? Stringify(JsonElement element) => element.ValueKind switch
|
||||||
{
|
{
|
||||||
JsonValueKind.Null or JsonValueKind.Undefined => null,
|
JsonValueKind.Null or JsonValueKind.Undefined => null,
|
||||||
JsonValueKind.String => element.GetString(),
|
JsonValueKind.String => element.GetString(),
|
||||||
|
JsonValueKind.Array => string.Join(", ", element.EnumerateArray().Select(Stringify)),
|
||||||
_ => element.GetRawText(),
|
_ => element.GetRawText(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -81,6 +81,28 @@ public sealed class AuditRecordDtoExtensionsTests
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void AuditChanges_LegacyFieldsArray_RendersAsList()
|
||||||
|
{
|
||||||
|
var record = Record("""{"fields":["autoMonitorNew"]}""");
|
||||||
|
|
||||||
|
AuditChangeDto change = Assert.Single(record.AuditChanges());
|
||||||
|
|
||||||
|
Assert.Equal(AuditFields.Fields, change.Field);
|
||||||
|
Assert.Null(change.From);
|
||||||
|
Assert.Equal("autoMonitorNew", change.To);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void AuditChanges_LegacyFieldsArray_JoinsMultipleKeys()
|
||||||
|
{
|
||||||
|
var record = Record("""{"fields":["autoMonitorNew","minLen"]}""");
|
||||||
|
|
||||||
|
AuditChangeDto change = Assert.Single(record.AuditChanges());
|
||||||
|
|
||||||
|
Assert.Equal("autoMonitorNew, minLen", change.To);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void AuditChanges_InvalidJson_ReturnsEmpty()
|
public void AuditChanges_InvalidJson_ReturnsEmpty()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user