diff --git a/src/Umbraco.Core/Models/DataType.cs b/src/Umbraco.Core/Models/DataType.cs index e9d9258643f6..cac12d1bb28a 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] 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)); + } +}