Aligned builders

This commit is contained in:
Bjarke Berg
2020-04-01 08:18:56 +02:00
parent b45c2f9412
commit 9e38ed045f
6 changed files with 68 additions and 40 deletions

View File

@@ -12,7 +12,7 @@ namespace Umbraco.Configuration.Models
/// </summary>
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!

View File

@@ -12,6 +12,7 @@
/// </remarks>
public const string ConfigPrefix = "Umbraco:CMS:";
public const string ConfigSecurityPrefix = ConfigPrefix+"Security:";
public const string ConfigGlobalPrefix = ConfigPrefix + "Global:";
public const string ConfigModelsBuilderPrefix = ConfigPrefix+"ModelsBuilder:";
}
}

View File

@@ -0,0 +1,7 @@
namespace Umbraco.Tests.Common.Builders.Interfaces
{
public interface IWithApprovedBuilder
{
bool? Approved { get; set; }
}
}

View File

@@ -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<User>,
IWithIdBuilder
public class UserBuilder : UserBuilder<object>
{
public UserBuilder() : base(null)
{
}
}
public class UserBuilder<TParent>
: ChildBuilderBase<TParent, User>,
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<UserBuilder<TParent>> _globalSettingsBuilder;
public UserBuilder WithDefaultUILanguage(string defaultLang)
public UserBuilder(TParent parentBuilder) : base(parentBuilder)
{
_globalSettingsBuilder = new GlobalSettingsBuilder<UserBuilder<TParent>>(this);
}
public GlobalSettingsBuilder<UserBuilder<TParent>> AddGlobalSettings() => _globalSettingsBuilder;
public UserBuilder<TParent> WithDefaultUILanguage(string defaultLang)
{
_defaultLang = defaultLang;
return this;
}
public UserBuilder WithLanguage(string language)
public UserBuilder<TParent> WithLanguage(string language)
{
_language = language;
return this;
}
public UserBuilder WithApproved(bool approved)
{
_approved = approved;
return this;
}
public UserBuilder WithRawPassword(string rawPassword)
public UserBuilder<TParent> WithRawPassword(string rawPassword)
{
_rawPassword = rawPassword;
return this;
}
public UserBuilder WithEmail(string email)
public UserBuilder<TParent> WithEmail(string email)
{
_email = email;
return this;
}
public UserBuilder WithUsername(string username)
public UserBuilder<TParent> WithUsername(string username)
{
_username = username;
return this;
}
public UserBuilder WithLockedOut(bool isLockedOut)
public UserBuilder<TParent> WithLockedOut(bool isLockedOut)
{
_isLockedOut = isLockedOut;
return this;
}
public UserBuilder WithName(string name)
{
_name = name;
return this;
}
/// <summary>
/// Will suffix the name, email and username for testing
/// </summary>
/// <param name="suffix"></param>
/// <returns></returns>
public UserBuilder WithSuffix(string suffix)
public UserBuilder<TParent> WithSuffix(string suffix)
{
_suffix = suffix;
return this;
@@ -84,16 +85,25 @@ namespace Umbraco.Tests.Common.Builders
public override User Build()
{
var globalSettings = Mock.Of<IGlobalSettings>(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;
}
}
}

View File

@@ -75,7 +75,7 @@ namespace Umbraco.Tests.Integration.Extensions
// dynamically change the config status
var umbVersion = app.ApplicationServices.GetRequiredService<IUmbracoVersion>();
var config = app.ApplicationServices.GetRequiredService<IConfiguration>();
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<IProfilingLogger>();

View File

@@ -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)