diff --git a/src/Umbraco.Core/Extensions/UdiGetterExtensions.cs b/src/Umbraco.Core/Extensions/UdiGetterExtensions.cs index 1ad94cbdc3..03ed07f2fe 100644 --- a/src/Umbraco.Core/Extensions/UdiGetterExtensions.cs +++ b/src/Umbraco.Core/Extensions/UdiGetterExtensions.cs @@ -232,9 +232,7 @@ public static class UdiGetterExtensions throw new ArgumentNullException("entity"); } - return new StringUdi( - Constants.UdiEntityType.Stylesheet, - entity.Path.TrimStart(Constants.CharArrays.ForwardSlash)).EnsureClosed(); + return GetUdiFromPath(Constants.UdiEntityType.Stylesheet, entity.Path); } /// @@ -249,8 +247,15 @@ public static class UdiGetterExtensions throw new ArgumentNullException("entity"); } - return new StringUdi(Constants.UdiEntityType.Script, entity.Path.TrimStart(Constants.CharArrays.ForwardSlash)) - .EnsureClosed(); + return GetUdiFromPath(Constants.UdiEntityType.Script, entity.Path); + } + + private static StringUdi GetUdiFromPath(string entityType, string path) + { + var id = path + .TrimStart(Constants.CharArrays.ForwardSlash) + .Replace("\\", "/"); + return new StringUdi(entityType, id).EnsureClosed(); } /// @@ -300,7 +305,7 @@ public static class UdiGetterExtensions ? Constants.UdiEntityType.PartialViewMacro : Constants.UdiEntityType.PartialView; - return new StringUdi(entityType, entity.Path.TrimStart(Constants.CharArrays.ForwardSlash)).EnsureClosed(); + return GetUdiFromPath(entityType, entity.Path); } /// diff --git a/tests/Umbraco.Tests.Common/Builders/PartialViewBuilder.cs b/tests/Umbraco.Tests.Common/Builders/PartialViewBuilder.cs new file mode 100644 index 0000000000..ead5a4f189 --- /dev/null +++ b/tests/Umbraco.Tests.Common/Builders/PartialViewBuilder.cs @@ -0,0 +1,41 @@ +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using Umbraco.Cms.Core.Models; + +namespace Umbraco.Cms.Tests.Common.Builders; + +public class PartialViewBuilder + : BuilderBase +{ + private string _path; + private string _content; + private PartialViewType _viewType = PartialViewType.Unknown; + + public PartialViewBuilder WithPath(string path) + { + _path = path; + return this; + } + + public PartialViewBuilder WithContent(string content) + { + _content = content; + return this; + } + + public PartialViewBuilder WithViewType(PartialViewType viewType) + { + _viewType = viewType; + return this; + } + + public override IPartialView Build() + { + var path = _path ?? string.Empty; + var content = _content ?? string.Empty; + var viewType = _viewType; + + return new PartialView(viewType, path) { Content = content }; + } +} diff --git a/tests/Umbraco.Tests.Common/Builders/ScriptBuilder.cs b/tests/Umbraco.Tests.Common/Builders/ScriptBuilder.cs new file mode 100644 index 0000000000..9e521d0c0f --- /dev/null +++ b/tests/Umbraco.Tests.Common/Builders/ScriptBuilder.cs @@ -0,0 +1,33 @@ +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using Umbraco.Cms.Core.Models; + +namespace Umbraco.Cms.Tests.Common.Builders; + +public class ScriptBuilder + : BuilderBase