From f7459069d120c22c0fad1fcf0c5b52cc850417d9 Mon Sep 17 00:00:00 2001 From: stepan Date: Sun, 13 Sep 2026 21:39:02 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=BE=D1=80=D0=BC=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D1=81=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=BE=D0=BA=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D1=91=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B5=D0=BA?= =?UTF-8?q?=20=D0=B2=20=D0=B0=D1=83=D0=B4=D0=B8=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extensions/AuditRecordDtoExtensions.cs | 3 ++- .../Tenants/AuditRecordDtoExtensionsTests.cs | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) 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() {