From 13af244ccd850cb01ad7a6f58ddfb416b45e22ab Mon Sep 17 00:00:00 2001 From: Kevin Jump Date: Tue, 15 Jul 2025 10:51:09 +0100 Subject: [PATCH 1/3] Add a backing field for EditorUIAlias and track changes when its set. --- src/Umbraco.Core/Models/DataType.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Core/Models/DataType.cs b/src/Umbraco.Core/Models/DataType.cs index e9d9258643f6..7978ca30be1c 100644 --- a/src/Umbraco.Core/Models/DataType.cs +++ b/src/Umbraco.Core/Models/DataType.cs @@ -17,6 +17,7 @@ public class DataType : TreeEntityBase, IDataType private IDictionary _configurationData; private ValueStorageType _databaseType; private IDataEditor? _editor; + private string? _editorUIAlias; private bool _hasConfigurationObject; /// @@ -60,7 +61,11 @@ public IDataEditor? Editor /// [DataMember] - public string? EditorUiAlias { get; set; } + public string? EditorUiAlias + { + get => _editorUIAlias; + set => SetPropertyValueAndDetectChanges(value, ref _editorUIAlias, nameof(EditorUiAlias)); + } /// [DataMember] From 7519e548a5e87895ab271ebc2e718aa5242f0761 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Mon, 21 Jul 2025 08:59:22 +0200 Subject: [PATCH 2/3] Add previously failing unit test to verify fix. --- .../Umbraco.Core/Models/DataTypeTests.cs | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 tests/Umbraco.Tests.UnitTests/Umbraco.Core/Models/DataTypeTests.cs diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Models/DataTypeTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Models/DataTypeTests.cs new file mode 100644 index 000000000000..bc27f3ea84ce --- /dev/null +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Models/DataTypeTests.cs @@ -0,0 +1,35 @@ +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using NUnit.Framework; +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Tests.Common.Builders; +using Umbraco.Cms.Tests.Common.Builders.Extensions; + +namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Models; + +[TestFixture] +public class DataTypeTests +{ + [Test] + public void Can_Update_And_Verify_Dirty_Properties() + { + var dataType = new DataTypeBuilder() + .WithName("Test Data Type") + .WithDatabaseType(ValueStorageType.Ntext) + .Build(); + + dataType.ResetDirtyProperties(); + + dataType.DatabaseType = ValueStorageType.Nvarchar; + dataType.EditorUiAlias = "Test.EditorUiAlias"; + + var dirtyProperties = dataType.GetDirtyProperties().OrderBy(x => x).ToList(); + + Assert.IsTrue(dataType.IsPropertyDirty(nameof(dataType.DatabaseType))); + Assert.IsTrue(dataType.IsPropertyDirty(nameof(dataType.EditorUiAlias))); + + Assert.AreEqual(2, dirtyProperties.Count); + Assert.AreEqual($"{nameof(dataType.DatabaseType)},{nameof(dataType.EditorUiAlias)}", string.Join(",", dirtyProperties)); + } +} From 0b8cd7a1c67da2d859dce119ee9a722b8b76ab19 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Mon, 21 Jul 2025 08:59:45 +0200 Subject: [PATCH 3/3] Aligned backing field casing with property name. --- src/Umbraco.Core/Models/DataType.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Core/Models/DataType.cs b/src/Umbraco.Core/Models/DataType.cs index 7978ca30be1c..cac12d1bb28a 100644 --- a/src/Umbraco.Core/Models/DataType.cs +++ b/src/Umbraco.Core/Models/DataType.cs @@ -17,7 +17,7 @@ public class DataType : TreeEntityBase, IDataType private IDictionary _configurationData; private ValueStorageType _databaseType; private IDataEditor? _editor; - private string? _editorUIAlias; + private string? _editorUiAlias; private bool _hasConfigurationObject; /// @@ -63,8 +63,8 @@ public IDataEditor? Editor [DataMember] public string? EditorUiAlias { - get => _editorUIAlias; - set => SetPropertyValueAndDetectChanges(value, ref _editorUIAlias, nameof(EditorUiAlias)); + get => _editorUiAlias; + set => SetPropertyValueAndDetectChanges(value, ref _editorUiAlias, nameof(EditorUiAlias)); } ///