From 43c6d1a675582046b432b2f48880847c75d19e34 Mon Sep 17 00:00:00 2001 From: Laura Neto <12862535+lauraneto@users.noreply.github.com> Date: Mon, 14 Jul 2025 15:32:56 +0200 Subject: [PATCH 1/2] Update the existing date/time property editor to provide a Kind of Unspecified --- .../ValueConverters/DatePickerValueConverter.cs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/DatePickerValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/DatePickerValueConverter.cs index 6f9238f01f47..f1deef76fbc9 100644 --- a/src/Umbraco.Core/PropertyEditors/ValueConverters/DatePickerValueConverter.cs +++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/DatePickerValueConverter.cs @@ -20,19 +20,16 @@ public override object ConvertSourceToIntermediate(IPublishedElement owner, IPub internal static DateTime ParseDateTimeValue(object? source) { - if (source is null) + if (source is DateTime dateTimeValue) { - return DateTime.MinValue; + return DateTime.SpecifyKind(dateTimeValue, DateTimeKind.Unspecified); } - if (source is DateTime dateTimeValue) + if (source.TryConvertTo() is { Success: true } attempt) { - return dateTimeValue; + return DateTime.SpecifyKind(attempt.Result, DateTimeKind.Unspecified); } - Attempt attempt = source.TryConvertTo(); - return attempt.Success - ? attempt.Result - : DateTime.MinValue; + return DateTime.MinValue; } } From e661b90d9704333f000f4d976b0ce01ec7b737de Mon Sep 17 00:00:00 2001 From: Laura Neto <12862535+lauraneto@users.noreply.github.com> Date: Mon, 21 Jul 2025 10:37:20 +0200 Subject: [PATCH 2/2] Added unit tests --- .../DatePickerValueConverterTests.cs | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ValueConverters/DatePickerValueConverterTests.cs diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ValueConverters/DatePickerValueConverterTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ValueConverters/DatePickerValueConverterTests.cs new file mode 100644 index 000000000000..4c047237188c --- /dev/null +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ValueConverters/DatePickerValueConverterTests.cs @@ -0,0 +1,25 @@ +using NUnit.Framework; +using Umbraco.Cms.Core.PropertyEditors.ValueConverters; + +namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.PropertyEditors.ValueConverters; + +[TestFixture] +public class DatePickerValueConverterTests +{ + private static object[] _parseDateTimeValueCases = + [ + new object[] { null, DateTime.MinValue }, + new object[] { DateTime.MinValue, DateTime.MinValue }, + new object[] { new DateTime(2021, 01, 20, 9, 0, 36), new DateTime(2021, 01, 20, 9, 0, 36) }, + new object[] { "2021-01-20T09:00:36", new DateTime(2021, 01, 20, 9, 0, 36) }, + new object[] { "test", DateTime.MinValue }, + ]; + + [TestCaseSource(nameof(_parseDateTimeValueCases))] + public void Can_Parse_DateTime_Value(object? input, DateTime expected) + { + var result = DatePickerValueConverter.ParseDateTimeValue(input); + Assert.AreEqual(expected, result); + Assert.AreEqual(DateTimeKind.Unspecified, result.Kind); + } +}