From 9e38ed045fc708b1cf51ca0875f730111152c9dc Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Wed, 1 Apr 2020 08:18:56 +0200 Subject: [PATCH 1/3] Aligned builders --- .../Models/GlobalSettings.cs | 2 +- src/Umbraco.Core/Constants-Configuration.cs | 1 + .../Interfaces/IWithApprovedBuilder.cs | 7 ++ .../Builders/UserBuilder.cs | 94 ++++++++++++------- .../ApplicationBuilderExtensions.cs | 2 +- .../UmbracoCoreServiceCollectionExtensions.cs | 2 - 6 files changed, 68 insertions(+), 40 deletions(-) create mode 100644 src/Umbraco.Tests.Common/Builders/Interfaces/IWithApprovedBuilder.cs diff --git a/src/Umbraco.Configuration/Models/GlobalSettings.cs b/src/Umbraco.Configuration/Models/GlobalSettings.cs index ed1b4e58a2..68d293d104 100644 --- a/src/Umbraco.Configuration/Models/GlobalSettings.cs +++ b/src/Umbraco.Configuration/Models/GlobalSettings.cs @@ -12,7 +12,7 @@ namespace Umbraco.Configuration.Models /// internal class GlobalSettings : IGlobalSettings { - public const string Prefix = Constants.Configuration.ConfigPrefix + "Global:"; + private const string Prefix = Constants.Configuration.ConfigGlobalPrefix; internal const string StaticReservedPaths = "~/app_plugins/,~/install/,~/mini-profiler-resources/,"; //must end with a comma! diff --git a/src/Umbraco.Core/Constants-Configuration.cs b/src/Umbraco.Core/Constants-Configuration.cs index c45229d918..a34ad8294f 100644 --- a/src/Umbraco.Core/Constants-Configuration.cs +++ b/src/Umbraco.Core/Constants-Configuration.cs @@ -12,6 +12,7 @@ /// public const string ConfigPrefix = "Umbraco:CMS:"; public const string ConfigSecurityPrefix = ConfigPrefix+"Security:"; + public const string ConfigGlobalPrefix = ConfigPrefix + "Global:"; public const string ConfigModelsBuilderPrefix = ConfigPrefix+"ModelsBuilder:"; } } diff --git a/src/Umbraco.Tests.Common/Builders/Interfaces/IWithApprovedBuilder.cs b/src/Umbraco.Tests.Common/Builders/Interfaces/IWithApprovedBuilder.cs new file mode 100644 index 0000000000..48d41e7a84 --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/Interfaces/IWithApprovedBuilder.cs @@ -0,0 +1,7 @@ +namespace Umbraco.Tests.Common.Builders.Interfaces +{ + public interface IWithApprovedBuilder + { + bool? Approved { get; set; } + } +} diff --git a/src/Umbraco.Tests.Common/Builders/UserBuilder.cs b/src/Umbraco.Tests.Common/Builders/UserBuilder.cs index 07ab8ef3f7..dd11156bf0 100644 --- a/src/Umbraco.Tests.Common/Builders/UserBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/UserBuilder.cs @@ -1,16 +1,21 @@ -using System; -using System.Linq; -using Moq; -using Umbraco.Core; -using Umbraco.Core.Configuration; using Umbraco.Core.Models.Membership; using Umbraco.Tests.Common.Builders.Interfaces; namespace Umbraco.Tests.Common.Builders { - public class UserBuilder - : BuilderBase, - IWithIdBuilder + + public class UserBuilder : UserBuilder + { + public UserBuilder() : base(null) + { + } + } + + public class UserBuilder + : ChildBuilderBase, + IWithIdBuilder, + IWithNameBuilder, + IWithApprovedBuilder { private int? _id; private string _language; @@ -22,61 +27,57 @@ namespace Umbraco.Tests.Common.Builders private string _username; private string _defaultLang; private string _suffix = string.Empty; + private GlobalSettingsBuilder> _globalSettingsBuilder; - public UserBuilder WithDefaultUILanguage(string defaultLang) + + public UserBuilder(TParent parentBuilder) : base(parentBuilder) + { + _globalSettingsBuilder = new GlobalSettingsBuilder>(this); + } + + public GlobalSettingsBuilder> AddGlobalSettings() => _globalSettingsBuilder; + public UserBuilder WithDefaultUILanguage(string defaultLang) { _defaultLang = defaultLang; return this; } - public UserBuilder WithLanguage(string language) + public UserBuilder WithLanguage(string language) { _language = language; return this; } - public UserBuilder WithApproved(bool approved) - { - _approved = approved; - return this; - } - - public UserBuilder WithRawPassword(string rawPassword) + public UserBuilder WithRawPassword(string rawPassword) { _rawPassword = rawPassword; return this; } - public UserBuilder WithEmail(string email) + public UserBuilder WithEmail(string email) { _email = email; return this; } - public UserBuilder WithUsername(string username) + public UserBuilder WithUsername(string username) { _username = username; return this; } - public UserBuilder WithLockedOut(bool isLockedOut) + public UserBuilder WithLockedOut(bool isLockedOut) { _isLockedOut = isLockedOut; return this; } - public UserBuilder WithName(string name) - { - _name = name; - return this; - } - /// /// Will suffix the name, email and username for testing /// /// /// - public UserBuilder WithSuffix(string suffix) + public UserBuilder WithSuffix(string suffix) { _suffix = suffix; return this; @@ -84,16 +85,25 @@ namespace Umbraco.Tests.Common.Builders public override User Build() { - var globalSettings = Mock.Of(x => x.DefaultUILanguage == (_defaultLang ?? "en-US")); - return new User(globalSettings, - _name ?? "TestUser" + _suffix, - _email ?? "test" + _suffix + "@test.com", - _username ?? "TestUser" + _suffix, - _rawPassword ?? "abcdefghijklmnopqrstuvwxyz") + var globalSettings = _globalSettingsBuilder.Build(); + var name = _name ?? "TestUser" + _suffix; + var email = _email ?? "test" + _suffix + "@test.com"; + var username = _username ?? "TestUser" + _suffix; + var rawPassword = _rawPassword ?? "abcdefghijklmnopqrstuvwxyz"; + var language = _language ?? globalSettings.DefaultUILanguage; + var isLockedOut = _isLockedOut ?? false; + var approved = _approved ?? true; + + return new User( + globalSettings, + name, + email, + username, + rawPassword) { - Language = _language ?? _defaultLang ?? "en-US", - IsLockedOut = _isLockedOut ?? false, - IsApproved = _approved ?? true + Language = language, + IsLockedOut = isLockedOut, + IsApproved = approved }; } @@ -102,5 +112,17 @@ namespace Umbraco.Tests.Common.Builders get => _id; set => _id = value; } + + string IWithNameBuilder.Name + { + get => _name; + set => _name = value; + } + + bool? IWithApprovedBuilder.Approved + { + get => _approved; + set => _approved = value; + } } } diff --git a/src/Umbraco.Tests.Integration/Extensions/ApplicationBuilderExtensions.cs b/src/Umbraco.Tests.Integration/Extensions/ApplicationBuilderExtensions.cs index 553aa4fe85..a162845200 100644 --- a/src/Umbraco.Tests.Integration/Extensions/ApplicationBuilderExtensions.cs +++ b/src/Umbraco.Tests.Integration/Extensions/ApplicationBuilderExtensions.cs @@ -75,7 +75,7 @@ namespace Umbraco.Tests.Integration.Extensions // dynamically change the config status var umbVersion = app.ApplicationServices.GetRequiredService(); var config = app.ApplicationServices.GetRequiredService(); - config[GlobalSettings.Prefix + "ConfigurationStatus"] = umbVersion.SemanticVersion.ToString(); + config[Constants.Configuration.ConfigGlobalPrefix + "ConfigurationStatus"] = umbVersion.SemanticVersion.ToString(); // re-run the runtime level check var profilingLogger = app.ApplicationServices.GetRequiredService(); diff --git a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs index 6f2b31bac1..a0dd1f8e63 100644 --- a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs @@ -155,8 +155,6 @@ namespace Umbraco.Web.Common.Extensions backOfficeInfo = new AspNetCoreBackOfficeInfo(globalSettings); profiler = GetWebProfiler(hostingEnvironment, httpContextAccessor); - - Current.Initialize(logger, configs, ioHelper, hostingEnvironment, backOfficeInfo, profiler); } private static IProfiler GetWebProfiler(Umbraco.Core.Hosting.IHostingEnvironment hostingEnvironment, IHttpContextAccessor httpContextAccessor) From 6012d6749e00ed75b03b754515557316516d9403 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Wed, 1 Apr 2020 11:31:21 +0200 Subject: [PATCH 2/3] Fix views --- .../Umbraco/PartialViewMacros/Templates/Gallery.cshtml | 2 +- src/Umbraco.Web.UI/Views/Partials/Grid/Editors/Media.cshtml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/Gallery.cshtml b/src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/Gallery.cshtml index 9462b3b638..8388c7a90d 100755 --- a/src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/Gallery.cshtml +++ b/src/Umbraco.Web.UI/Umbraco/PartialViewMacros/Templates/Gallery.cshtml @@ -1,7 +1,7 @@ @using Umbraco.Core.Models.PublishedContent @using Umbraco.Web @using Umbraco.Core -@using Umbraco.Core.Models +@using Umbraco.Core.Media @using Umbraco.Web.Composing @inherits Umbraco.Web.Macros.PartialViewMacroPage diff --git a/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/Media.cshtml b/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/Media.cshtml index 0ed54ab958..9d91abc34a 100644 --- a/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/Media.cshtml +++ b/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/Media.cshtml @@ -1,5 +1,5 @@ @model dynamic -@using Umbraco.Web.Templates +@using Umbraco.Core.Media @if (Model.value != null) { @@ -21,7 +21,7 @@ var altText = Model.value.altText ?? Model.value.caption ?? string.Empty; @altText - + if (Model.value.caption != null) {

@Model.value.caption

From 944042ad614b7803d47c9e34dfb7ee0b815f22a6 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Wed, 1 Apr 2020 12:07:54 +0200 Subject: [PATCH 3/3] Updated builders --- .../Builders/UserBuilder.cs | 11 +++-- .../Builders/UserGroupBuilder.cs | 42 +++++++++++++++++-- 2 files changed, 43 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Tests.Common/Builders/UserBuilder.cs b/src/Umbraco.Tests.Common/Builders/UserBuilder.cs index dd11156bf0..cb24e0e8dc 100644 --- a/src/Umbraco.Tests.Common/Builders/UserBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/UserBuilder.cs @@ -1,3 +1,4 @@ +using Umbraco.Configuration.Models; using Umbraco.Core.Models.Membership; using Umbraco.Tests.Common.Builders.Interfaces; @@ -25,18 +26,16 @@ namespace Umbraco.Tests.Common.Builders private bool? _isLockedOut; private string _email; private string _username; - private string _defaultLang; private string _suffix = string.Empty; - private GlobalSettingsBuilder> _globalSettingsBuilder; + private string _defaultLang; public UserBuilder(TParent parentBuilder) : base(parentBuilder) { - _globalSettingsBuilder = new GlobalSettingsBuilder>(this); + } - public GlobalSettingsBuilder> AddGlobalSettings() => _globalSettingsBuilder; - public UserBuilder WithDefaultUILanguage(string defaultLang) + public UserBuilder WithDefaultUILanguage(string defaultLang) { _defaultLang = defaultLang; return this; @@ -85,7 +84,7 @@ namespace Umbraco.Tests.Common.Builders public override User Build() { - var globalSettings = _globalSettingsBuilder.Build(); + var globalSettings = new GlobalSettingsBuilder().WithDefaultUiLanguage(_defaultLang).Build(); var name = _name ?? "TestUser" + _suffix; var email = _email ?? "test" + _suffix + "@test.com"; var username = _username ?? "TestUser" + _suffix; diff --git a/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs b/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs index d3ce5e71a8..4c6bb7a74c 100644 --- a/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs @@ -6,9 +6,20 @@ using Umbraco.Tests.Common.Builders.Interfaces; namespace Umbraco.Tests.Common.Builders { - public class UserGroupBuilder - : BuilderBase, - IWithIdBuilder + + public class UserGroupBuilder : UserGroupBuilder + { + public UserGroupBuilder() : base(null) + { + } + } + + public class UserGroupBuilder + : ChildBuilderBase, + IWithIdBuilder, + IWithIconBuilder, + IWithAliasBuilder, + IWithNameBuilder { private int? _startContentId; private int? _startMediaId; @@ -20,12 +31,16 @@ namespace Umbraco.Tests.Common.Builders private string _suffix; private int? _id; + public UserGroupBuilder(TParent parentBuilder) : base(parentBuilder) + { + } + /// /// Will suffix the name and alias for testing /// /// /// - public UserGroupBuilder WithSuffix(string suffix) + public UserGroupBuilder WithSuffix(string suffix) { _suffix = suffix; return this; @@ -61,5 +76,24 @@ namespace Umbraco.Tests.Common.Builders get => _id; set => _id = value; } + + + string IWithIconBuilder.Icon + { + get => _icon; + set => _icon = value; + } + + string IWithAliasBuilder.Alias + { + get => _alias; + set => _alias = value; + } + + string IWithNameBuilder.Name + { + get => _name; + set => _name = value; + } } }