diff --git a/src/core/Deal.Modules.Tenants/Application/Extensions/AuditRecordDtoExtensions.cs b/src/core/Deal.Modules.Tenants/Application/Extensions/AuditRecordDtoExtensions.cs index b0879fd..c806285 100644 --- a/src/core/Deal.Modules.Tenants/Application/Extensions/AuditRecordDtoExtensions.cs +++ b/src/core/Deal.Modules.Tenants/Application/Extensions/AuditRecordDtoExtensions.cs @@ -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(), }; diff --git a/src/core/tests/Deal.Tests.Unit/Modules/Tenants/AuditRecordDtoExtensionsTests.cs b/src/core/tests/Deal.Tests.Unit/Modules/Tenants/AuditRecordDtoExtensionsTests.cs index f9bd186..659e5c5 100644 --- a/src/core/tests/Deal.Tests.Unit/Modules/Tenants/AuditRecordDtoExtensionsTests.cs +++ b/src/core/tests/Deal.Tests.Unit/Modules/Tenants/AuditRecordDtoExtensionsTests.cs @@ -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() {