Нормализовать список изменённых настроек в аудите

This commit is contained in:
2026-09-13 21:39:02 +03:00
parent 37b7524665
commit f7459069d1
2 changed files with 24 additions and 1 deletions
@@ -183,11 +183,12 @@ public static class AuditRecordDtoExtensions
// Приводит значение JSON к строке отображения.
// element: Значение JSON.
// Возвращает: Строковое представление либо null для JSON null.
// Возвращает: Строковое представление либо null для JSON null; массивы — списком через запятую.
private static string? Stringify(JsonElement element) => element.ValueKind switch
{
JsonValueKind.Null or JsonValueKind.Undefined => null,
JsonValueKind.String => element.GetString(),
JsonValueKind.Array => string.Join(", ", element.EnumerateArray().Select(Stringify)),
_ => 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]
public void AuditChanges_InvalidJson_ReturnsEmpty()
{