diff --git a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj index a3f8953ac3..db3ae1bc25 100644 --- a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj +++ b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj @@ -78,7 +78,10 @@ <_Parameter1>Umbraco.Tests.Common - + + + <_Parameter1>Umbraco.Tests.UnitTests + diff --git a/src/Umbraco.Tests.Common/Builders/ConfigurationEditorBuilder.cs b/src/Umbraco.Tests.Common/Builders/ConfigurationEditorBuilder.cs index 3e0b9b96a9..f0761a983e 100644 --- a/src/Umbraco.Tests.Common/Builders/ConfigurationEditorBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/ConfigurationEditorBuilder.cs @@ -7,12 +7,10 @@ namespace Umbraco.Tests.Common.Builders { private IDictionary _defaultConfiguration; - public ConfigurationEditorBuilder(TParent parentBuilder) : base(parentBuilder) { } - public ConfigurationEditorBuilder WithDefaultConfiguration(IDictionary defaultConfiguration) { _defaultConfiguration = defaultConfiguration; @@ -28,6 +26,5 @@ namespace Umbraco.Tests.Common.Builders DefaultConfiguration = defaultConfiguration, }; } - } } diff --git a/src/Umbraco.Tests.Common/Builders/DataEditorBuilder.cs b/src/Umbraco.Tests.Common/Builders/DataEditorBuilder.cs index b3c3ff1b7e..5e6b174f56 100644 --- a/src/Umbraco.Tests.Common/Builders/DataEditorBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/DataEditorBuilder.cs @@ -9,8 +9,8 @@ namespace Umbraco.Tests.Common.Builders { public class DataEditorBuilder : ChildBuilderBase { - private readonly ConfigurationEditorBuilder> _explicitConfigurationEditorBuilder; - private readonly DataValueEditorBuilder> _explicitValueEditorBuilder; + private ConfigurationEditorBuilder> _explicitConfigurationEditorBuilder; + private DataValueEditorBuilder> _explicitValueEditorBuilder; private IDictionary _defaultConfiguration; public DataEditorBuilder(TParent parentBuilder) : base(parentBuilder) diff --git a/src/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs b/src/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs index de7b8d9a97..cdf4a68d09 100644 --- a/src/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs @@ -19,7 +19,7 @@ namespace Umbraco.Tests.Common.Builders IWithPathBuilder, IWithSortOrderBuilder { - private readonly DataEditorBuilder _dataEditorBuilder; + private DataEditorBuilder _dataEditorBuilder; private int? _id; private int? _parentId; private Guid? _key; @@ -28,7 +28,6 @@ namespace Umbraco.Tests.Common.Builders private DateTime? _deleteDate; private string _name; private bool? _trashed; - // private object _configuration; private int? _level; private string _path; private int? _creatorId; @@ -40,12 +39,6 @@ namespace Umbraco.Tests.Common.Builders _dataEditorBuilder = new DataEditorBuilder(this); } - // public DataTypeBuilder WithConfiguration(object configuration) - // { - // _configuration = configuration; - // return this; - // } - public DataTypeBuilder WithDatabaseType(ValueStorageType databaseType) { _databaseType = databaseType; @@ -67,7 +60,6 @@ namespace Umbraco.Tests.Common.Builders var updateDate = _updateDate ?? DateTime.Now; var deleteDate = _deleteDate ?? null; var name = _name ?? Guid.NewGuid().ToString(); - // var configuration = _configuration ?? editor.GetConfigurationEditor().DefaultConfigurationObject; var level = _level ?? 0; var path = _path ?? string.Empty; var creatorId = _creatorId ?? 1; diff --git a/src/Umbraco.Tests.Common/Builders/DataValueEditorBuilder.cs b/src/Umbraco.Tests.Common/Builders/DataValueEditorBuilder.cs index 3d0b518ee7..ecc2649c02 100644 --- a/src/Umbraco.Tests.Common/Builders/DataValueEditorBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/DataValueEditorBuilder.cs @@ -13,7 +13,6 @@ namespace Umbraco.Tests.Common.Builders private bool? _hideLabel; private string _valueType; - public DataValueEditorBuilder(TParent parentBuilder) : base(parentBuilder) { } diff --git a/src/Umbraco.Tests.Common/Builders/DictionaryTranslationBuilder.cs b/src/Umbraco.Tests.Common/Builders/DictionaryTranslationBuilder.cs index d2f9d4bf02..6742bf0d97 100644 --- a/src/Umbraco.Tests.Common/Builders/DictionaryTranslationBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/DictionaryTranslationBuilder.cs @@ -12,8 +12,7 @@ namespace Umbraco.Tests.Common.Builders IWithDeleteDateBuilder, IWithKeyBuilder { - private readonly LanguageBuilder _languageBuilder; - private readonly Guid? _uniqueId = null; + private LanguageBuilder _languageBuilder; private DateTime? _createDate; private DateTime? _deleteDate; private int? _id; @@ -26,6 +25,36 @@ namespace Umbraco.Tests.Common.Builders _languageBuilder = new LanguageBuilder(this); } + public LanguageBuilder AddLanguage() => _languageBuilder; + + public DictionaryTranslationBuilder WithValue(string value) + { + _value = value; + return this; + } + + public override IDictionaryTranslation Build() + { + var createDate = _createDate ?? DateTime.Now; + var updateDate = _updateDate ?? DateTime.Now; + var deleteDate = _deleteDate ?? null; + var id = _id ?? 1; + var key = _key ?? Guid.NewGuid(); + + var result = new DictionaryTranslation( + _languageBuilder.Build(), + _value ?? Guid.NewGuid().ToString(), + key) + { + CreateDate = createDate, + UpdateDate = updateDate, + DeleteDate = deleteDate, + Id = id + }; + + return result; + } + DateTime? IWithCreateDateBuilder.CreateDate { get => _createDate; @@ -55,35 +84,5 @@ namespace Umbraco.Tests.Common.Builders get => _updateDate; set => _updateDate = value; } - - public override IDictionaryTranslation Build() - { - var createDate = _createDate ?? DateTime.Now; - var updateDate = _updateDate ?? DateTime.Now; - var deleteDate = _deleteDate ?? null; - var id = _id ?? 1; - var key = _key ?? Guid.NewGuid(); - - var result = new DictionaryTranslation( - _languageBuilder.Build(), - _value ?? Guid.NewGuid().ToString(), - _uniqueId ?? key) - { - CreateDate = createDate, - UpdateDate = updateDate, - DeleteDate = deleteDate, - Id = id - }; - - return result; - } - - public LanguageBuilder AddLanguage() => _languageBuilder; - - public DictionaryTranslationBuilder WithValue(string value) - { - _value = value; - return this; - } } } diff --git a/src/Umbraco.Tests.Common/Builders/EntitySlimBuilder.cs b/src/Umbraco.Tests.Common/Builders/EntitySlimBuilder.cs new file mode 100644 index 0000000000..844c765a9d --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/EntitySlimBuilder.cs @@ -0,0 +1,44 @@ +using Umbraco.Core.Models.Entities; +using Umbraco.Tests.Common.Builders.Interfaces; + +namespace Umbraco.Tests.Common.Builders +{ + public class EntitySlimBuilder + : BuilderBase, + IWithIdBuilder, + IWithParentIdBuilder + { + private int? _id; + private int? _parentId; + + public override EntitySlim Build() + { + var id = _id ?? 1; + var parentId = _parentId ?? -1; + + return new EntitySlim + { + Id = id, + ParentId = parentId, + }; + } + + public EntitySlimBuilder WithNoParentId() + { + _parentId = 0; + return this; + } + + int? IWithIdBuilder.Id + { + get => _id; + set => _id = value; + } + + int? IWithParentIdBuilder.ParentId + { + get => _parentId; + set => _parentId = value; + } + } +} diff --git a/src/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs b/src/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs index c105a8bded..f3c0b9796e 100644 --- a/src/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs +++ b/src/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs @@ -12,6 +12,13 @@ namespace Umbraco.Tests.Common.Builders.Extensions return builder; } + public static T WithoutIdentity(this T builder) + where T : IWithIdBuilder + { + builder.Id = 0; + return builder; + } + public static T WithCreatorId(this T builder, int creatorId) where T : IWithCreatorIdBuilder { @@ -116,5 +123,60 @@ namespace Umbraco.Tests.Common.Builders.Extensions builder.Thumbnail = thumbnail; return builder; } + + public static T WithLogin(this T builder, string username, string rawPasswordValue) + where T : IWithLoginBuilder + { + builder.Username = username; + builder.RawPasswordValue = rawPasswordValue; + return builder; + } + + public static T WithEmail(this T builder, string email) + where T : IWithEmailBuilder + { + builder.Email = email; + return builder; + } + + public static T WithFailedPasswordAttempts(this T builder, int failedPasswordAttempts) + where T : IWithFailedPasswordAttemptsBuilder + { + builder.FailedPasswordAttempts = failedPasswordAttempts; + return builder; + } + + public static T WithIsApproved(this T builder, bool isApproved) + where T : IWithIsApprovedBuilder + { + builder.IsApproved = isApproved; + return builder; + } + + public static T WithIsLockedOut(this T builder, bool isLockedOut, DateTime? lastLockoutDate = null) + where T : IWithIsLockedOutBuilder + { + builder.IsLockedOut = isLockedOut; + if (lastLockoutDate.HasValue) + { + builder.LastLockoutDate = lastLockoutDate.Value; + } + + return builder; + } + + public static T WithLastLoginDate(this T builder, DateTime lastLoginDate) + where T : IWithLastLoginDateBuilder + { + builder.LastLoginDate = lastLoginDate; + return builder; + } + + public static T WithLastPasswordChangeDate(this T builder, DateTime lastPasswordChangeDate) + where T : IWithLastPasswordChangeDateBuilder + { + builder.LastPasswordChangeDate = lastPasswordChangeDate; + return builder; + } } } diff --git a/src/Umbraco.Tests.Common/Builders/GenericCollectionBuilder.cs b/src/Umbraco.Tests.Common/Builders/GenericCollectionBuilder.cs index c7e176e9b0..0c45f6a599 100644 --- a/src/Umbraco.Tests.Common/Builders/GenericCollectionBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/GenericCollectionBuilder.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; namespace Umbraco.Tests.Common.Builders { @@ -14,7 +15,8 @@ namespace Umbraco.Tests.Common.Builders public override IEnumerable Build() { - return _collection; + var collection = _collection?.ToList() ?? Enumerable.Empty(); + return collection; } public GenericCollectionBuilder WithValue(T value) diff --git a/src/Umbraco.Tests.Common/Builders/GenericDictionaryBuilder.cs b/src/Umbraco.Tests.Common/Builders/GenericDictionaryBuilder.cs index 8f6aedcf43..f4cb7c6a30 100644 --- a/src/Umbraco.Tests.Common/Builders/GenericDictionaryBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/GenericDictionaryBuilder.cs @@ -14,7 +14,9 @@ namespace Umbraco.Tests.Common.Builders public override IDictionary Build() { - return _dictionary; + return _dictionary == null + ? new Dictionary() + : new Dictionary(_dictionary); } public GenericDictionaryBuilder WithKeyValue(TKey key, TValue value) diff --git a/src/Umbraco.Tests.Common/Builders/GlobalSettingsBuilder.cs b/src/Umbraco.Tests.Common/Builders/GlobalSettingsBuilder.cs index 56e242146c..4a88d4a571 100644 --- a/src/Umbraco.Tests.Common/Builders/GlobalSettingsBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/GlobalSettingsBuilder.cs @@ -34,7 +34,6 @@ namespace Umbraco.Tests.Common.Builders private int? _versionCheckPeriod; private readonly SmtpSettingsBuilder> _smtpSettingsBuilder; - public GlobalSettingsBuilder(TParent parentBuilder) : base(parentBuilder) { _smtpSettingsBuilder = new SmtpSettingsBuilder>(this); @@ -192,7 +191,6 @@ namespace Umbraco.Tests.Common.Builders var mainDomLock = _mainDomLock ?? string.Empty; var noNodesViewPath = _noNodesViewPath ?? "~/config/splashes/NoNodes.cshtml"; - return new TestGlobalSettings { ConfigurationStatus = configurationStatus, diff --git a/src/Umbraco.Tests.Common/Builders/Interfaces/IAccountBuilder.cs b/src/Umbraco.Tests.Common/Builders/Interfaces/IAccountBuilder.cs new file mode 100644 index 0000000000..77fdd30547 --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/Interfaces/IAccountBuilder.cs @@ -0,0 +1,12 @@ +namespace Umbraco.Tests.Common.Builders.Interfaces +{ + public interface IAccountBuilder : IWithLoginBuilder, + IWithEmailBuilder, + IWithFailedPasswordAttemptsBuilder, + IWithIsApprovedBuilder, + IWithIsLockedOutBuilder, + IWithLastLoginDateBuilder, + IWithLastPasswordChangeDateBuilder + { + } +} diff --git a/src/Umbraco.Tests.Common/Builders/Interfaces/IWithApprovedBuilder.cs b/src/Umbraco.Tests.Common/Builders/Interfaces/IWithApprovedBuilder.cs deleted file mode 100644 index 48d41e7a84..0000000000 --- a/src/Umbraco.Tests.Common/Builders/Interfaces/IWithApprovedBuilder.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Umbraco.Tests.Common.Builders.Interfaces -{ - public interface IWithApprovedBuilder - { - bool? Approved { get; set; } - } -} diff --git a/src/Umbraco.Tests.Common/Builders/Interfaces/IWithEmailBuilder.cs b/src/Umbraco.Tests.Common/Builders/Interfaces/IWithEmailBuilder.cs new file mode 100644 index 0000000000..cb3be57e62 --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/Interfaces/IWithEmailBuilder.cs @@ -0,0 +1,7 @@ +namespace Umbraco.Tests.Common.Builders.Interfaces +{ + public interface IWithEmailBuilder + { + string Email { get; set; } + } +} diff --git a/src/Umbraco.Tests.Common/Builders/Interfaces/IWithFailedPasswordAttemptsBuilder.cs b/src/Umbraco.Tests.Common/Builders/Interfaces/IWithFailedPasswordAttemptsBuilder.cs new file mode 100644 index 0000000000..d39647b28e --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/Interfaces/IWithFailedPasswordAttemptsBuilder.cs @@ -0,0 +1,7 @@ +namespace Umbraco.Tests.Common.Builders.Interfaces +{ + public interface IWithFailedPasswordAttemptsBuilder + { + int? FailedPasswordAttempts { get; set; } + } +} diff --git a/src/Umbraco.Tests.Common/Builders/Interfaces/IWithIsApprovedBuilder.cs b/src/Umbraco.Tests.Common/Builders/Interfaces/IWithIsApprovedBuilder.cs new file mode 100644 index 0000000000..c27c34d3a2 --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/Interfaces/IWithIsApprovedBuilder.cs @@ -0,0 +1,7 @@ +namespace Umbraco.Tests.Common.Builders.Interfaces +{ + public interface IWithIsApprovedBuilder + { + bool? IsApproved { get; set; } + } +} diff --git a/src/Umbraco.Tests.Common/Builders/Interfaces/IWithIsLockedOutBuilder.cs b/src/Umbraco.Tests.Common/Builders/Interfaces/IWithIsLockedOutBuilder.cs new file mode 100644 index 0000000000..55577ed312 --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/Interfaces/IWithIsLockedOutBuilder.cs @@ -0,0 +1,11 @@ +using System; + +namespace Umbraco.Tests.Common.Builders.Interfaces +{ + public interface IWithIsLockedOutBuilder + { + bool? IsLockedOut { get; set; } + + DateTime? LastLockoutDate { get; set; } + } +} diff --git a/src/Umbraco.Tests.Common/Builders/Interfaces/IWithLastLoginDateBuilder.cs b/src/Umbraco.Tests.Common/Builders/Interfaces/IWithLastLoginDateBuilder.cs new file mode 100644 index 0000000000..0355786927 --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/Interfaces/IWithLastLoginDateBuilder.cs @@ -0,0 +1,9 @@ +using System; + +namespace Umbraco.Tests.Common.Builders.Interfaces +{ + public interface IWithLastLoginDateBuilder + { + DateTime? LastLoginDate { get; set; } + } +} diff --git a/src/Umbraco.Tests.Common/Builders/Interfaces/IWithLastPasswordChangeDateBuilder.cs b/src/Umbraco.Tests.Common/Builders/Interfaces/IWithLastPasswordChangeDateBuilder.cs new file mode 100644 index 0000000000..833da022d4 --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/Interfaces/IWithLastPasswordChangeDateBuilder.cs @@ -0,0 +1,9 @@ +using System; + +namespace Umbraco.Tests.Common.Builders.Interfaces +{ + public interface IWithLastPasswordChangeDateBuilder + { + DateTime? LastPasswordChangeDate { get; set; } + } +} diff --git a/src/Umbraco.Tests.Common/Builders/Interfaces/IWithLoginBuilder.cs b/src/Umbraco.Tests.Common/Builders/Interfaces/IWithLoginBuilder.cs new file mode 100644 index 0000000000..dc099f55b9 --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/Interfaces/IWithLoginBuilder.cs @@ -0,0 +1,9 @@ +namespace Umbraco.Tests.Common.Builders.Interfaces +{ + public interface IWithLoginBuilder + { + string Username { get; set; } + + string RawPasswordValue { get; set; } + } +} diff --git a/src/Umbraco.Tests.Common/Builders/LanguageBuilder.cs b/src/Umbraco.Tests.Common/Builders/LanguageBuilder.cs index ae60920c9c..953a64c5ed 100644 --- a/src/Umbraco.Tests.Common/Builders/LanguageBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/LanguageBuilder.cs @@ -37,6 +37,50 @@ namespace Umbraco.Tests.Common.Builders { } + public LanguageBuilder WithIsDefault(bool isDefault) + { + _isDefault = isDefault; + return this; + } + + public LanguageBuilder WithIsMandatory(bool isMandatory) + { + _isMandatory = isMandatory; + return this; + } + + public LanguageBuilder WithFallbackLanguageId(int fallbackLanguageId) + { + _fallbackLanguageId = fallbackLanguageId; + return this; + } + + public override ILanguage Build() + { + var cultureInfo = _cultureInfo ?? CultureInfo.GetCultureInfo("en-US"); + var key = _key ?? Guid.NewGuid(); + var createDate = _createDate ?? DateTime.Now; + var updateDate = _updateDate ?? DateTime.Now; + var deleteDate = _deleteDate ?? null; + var fallbackLanguageId = _fallbackLanguageId ?? null; + var isDefault = _isDefault ?? false; + var isMandatory = _isMandatory ?? false; + + return new Language(Mock.Of(), cultureInfo.Name) + { + Id = _id ?? 1, + CultureName = cultureInfo.TwoLetterISOLanguageName, + IsoCode = new RegionInfo(cultureInfo.LCID).Name, + Key = key, + CreateDate = createDate, + UpdateDate = updateDate, + DeleteDate = deleteDate, + IsDefault = isDefault, + IsMandatory = isMandatory, + FallbackLanguageId = fallbackLanguageId + }; + } + DateTime? IWithCreateDateBuilder.CreateDate { get => _createDate; @@ -72,49 +116,5 @@ namespace Umbraco.Tests.Common.Builders get => _updateDate; set => _updateDate = value; } - - public override ILanguage Build() - { - var cultureInfo = _cultureInfo ?? CultureInfo.GetCultureInfo("en-US"); - var key = _key ?? Guid.NewGuid(); - var createDate = _createDate ?? DateTime.Now; - var updateDate = _updateDate ?? DateTime.Now; - var deleteDate = _deleteDate ?? null; - var fallbackLanguageId = _fallbackLanguageId ?? null; - var isDefault = _isDefault ?? false; - var isMandatory = _isMandatory ?? false; - - return new Language(Mock.Of(), cultureInfo.Name) - { - Id = _id ?? 1, - CultureName = cultureInfo.TwoLetterISOLanguageName, - IsoCode = new RegionInfo(cultureInfo.LCID).Name, - Key = key, - CreateDate = createDate, - UpdateDate = updateDate, - DeleteDate = deleteDate, - IsDefault = isDefault, - IsMandatory = isMandatory, - FallbackLanguageId = fallbackLanguageId - }; - } - - public LanguageBuilder WithIsDefault(bool isDefault) - { - _isDefault = isDefault; - return this; - } - - public LanguageBuilder WithIsMandatory(bool isMandatory) - { - _isMandatory = isMandatory; - return this; - } - - public LanguageBuilder WithFallbackLanguageId(int fallbackLanguageId) - { - _fallbackLanguageId = fallbackLanguageId; - return this; - } } } diff --git a/src/Umbraco.Tests.Common/Builders/MacroBuilder.cs b/src/Umbraco.Tests.Common/Builders/MacroBuilder.cs new file mode 100644 index 0000000000..66e81ef8ce --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/MacroBuilder.cs @@ -0,0 +1,125 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Umbraco.Core.Models; +using Umbraco.Core.Strings; +using Umbraco.Tests.Common.Builders.Extensions; +using Umbraco.Tests.Common.Builders.Interfaces; + +namespace Umbraco.Tests.Common.Builders +{ + public class MacroBuilder + : BuilderBase, + IWithIdBuilder, + IWithKeyBuilder, + IWithAliasBuilder, + IWithNameBuilder + { + private List _propertyBuilders = new List(); + + private int? _id; + private Guid? _key; + private string _alias; + private string _name; + private bool? _useInEditor; + private int? _cacheDuration; + private bool? _cacheByPage; + private bool? _cacheByMember; + private bool? _dontRender; + private string _macroSource; + + public MacroBuilder WithUseInEditor(bool useInEditor) + { + _useInEditor = useInEditor; + return this; + } + + public MacroBuilder WithCacheDuration(int cacheDuration) + { + _cacheDuration = cacheDuration; + return this; + } + + public MacroBuilder WithCacheByPage(bool cacheByPage) + { + _cacheByPage = cacheByPage; + return this; + } + + public MacroBuilder WithCacheByMember(bool cacheByMember) + { + _cacheByMember = cacheByMember; + return this; + } + + public MacroBuilder WithDontRender(bool dontRender) + { + _dontRender = dontRender; + return this; + } + + public MacroBuilder WithSource(string macroSource) + { + _macroSource = macroSource; + return this; + } + + public MacroPropertyBuilder AddProperty() + { + var builder = new MacroPropertyBuilder(this); + + _propertyBuilders.Add(builder); + + return builder; + } + + public override Macro Build() + { + var id = _id ?? 1; + var name = _name ?? Guid.NewGuid().ToString(); + var alias = _alias ?? name.ToCamelCase(); + var key = _key ?? Guid.NewGuid(); + var useInEditor = _useInEditor ?? false; + var cacheDuration = _cacheDuration ?? 0; + var cacheByPage = _cacheByPage ?? false; + var cacheByMember = _cacheByMember ?? false; + var dontRender = _dontRender ?? false; + var macroSource = _macroSource ?? string.Empty; + + var shortStringHelper = new DefaultShortStringHelper(new DefaultShortStringHelperConfig()); + + var macro = new Macro(shortStringHelper, id, key, useInEditor, cacheDuration, alias, name, cacheByPage, cacheByMember, dontRender, macroSource); + + foreach (var property in _propertyBuilders.Select(x => x.Build())) + { + macro.Properties.Add(property); + } + + return macro; + } + + int? IWithIdBuilder.Id + { + get => _id; + set => _id = value; + } + + Guid? IWithKeyBuilder.Key + { + get => _key; + set => _key = value; + } + + string IWithAliasBuilder.Alias + { + get => _alias; + set => _alias = value; + } + + string IWithNameBuilder.Name + { + get => _name; + set => _name = value; + } + } +} diff --git a/src/Umbraco.Tests.Common/Builders/MacroPropertyBuilder.cs b/src/Umbraco.Tests.Common/Builders/MacroPropertyBuilder.cs new file mode 100644 index 0000000000..ce80a056e9 --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/MacroPropertyBuilder.cs @@ -0,0 +1,75 @@ +using System; +using Umbraco.Core.Models; +using Umbraco.Tests.Common.Builders.Extensions; +using Umbraco.Tests.Common.Builders.Interfaces; + +namespace Umbraco.Tests.Common.Builders +{ + public class MacroPropertyBuilder + : ChildBuilderBase, + IWithIdBuilder, + IWithKeyBuilder, + IWithAliasBuilder, + IWithNameBuilder, + IWithSortOrderBuilder + { + private int? _id; + private Guid? _key; + private string _alias; + private string _name; + private int? _sortOrder; + private string _editorAlias; + + public MacroPropertyBuilder(MacroBuilder parentBuilder) : base(parentBuilder) + { + } + + public MacroPropertyBuilder WithEditorAlias(string editorAlias) + { + _editorAlias = editorAlias; + return this; + } + + public override IMacroProperty Build() + { + var id = _id ?? 1; + var name = _name ?? Guid.NewGuid().ToString(); + var alias = _alias ?? name.ToCamelCase(); + var key = _key ?? Guid.NewGuid(); + var sortOrder = _sortOrder ?? 0; + var editorAlias = _editorAlias ?? string.Empty; + + return new MacroProperty(id, key, alias, name, sortOrder, editorAlias); + } + + int? IWithIdBuilder.Id + { + get => _id; + set => _id = value; + } + + Guid? IWithKeyBuilder.Key + { + get => _key; + set => _key = value; + } + + string IWithAliasBuilder.Alias + { + get => _alias; + set => _alias = value; + } + + string IWithNameBuilder.Name + { + get => _name; + set => _name = value; + } + + int? IWithSortOrderBuilder.SortOrder + { + get => _sortOrder; + set => _sortOrder = value; + } + } +} diff --git a/src/Umbraco.Tests.Common/Builders/MemberBuilder.cs b/src/Umbraco.Tests.Common/Builders/MemberBuilder.cs index 3925ac642b..16ec7ed005 100644 --- a/src/Umbraco.Tests.Common/Builders/MemberBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/MemberBuilder.cs @@ -15,7 +15,8 @@ namespace Umbraco.Tests.Common.Builders IWithTrashedBuilder, IWithLevelBuilder, IWithPathBuilder, - IWithSortOrderBuilder + IWithSortOrderBuilder, + IAccountBuilder { private MemberTypeBuilder _memberTypeBuilder; private GenericCollectionBuilder _memberGroupsBuilder; @@ -28,12 +29,12 @@ namespace Umbraco.Tests.Common.Builders private DateTime? _updateDate; private string _name; private int? _creatorId; + private int? _level; + private string _path; private string _username; private string _rawPasswordValue; private string _email; private int? _failedPasswordAttempts; - private int? _level; - private string _path; private bool? _isApproved; private bool? _isLockedOut; private DateTime? _lastLockoutDate; @@ -43,60 +44,6 @@ namespace Umbraco.Tests.Common.Builders private bool? _trashed; private int? _propertyIdsIncrementingFrom; - public MemberBuilder WithUserName(string username) - { - _username = username; - return this; - } - - public MemberBuilder WithEmail(string email) - { - _email = email; - return this; - } - - public MemberBuilder WithRawPasswordValue(string rawPasswordValue) - { - _rawPasswordValue = rawPasswordValue; - return this; - } - - public MemberBuilder WithFailedPasswordAttempts(int failedPasswordAttempts) - { - _failedPasswordAttempts = failedPasswordAttempts; - return this; - } - - public MemberBuilder WithIsApproved(bool isApproved) - { - _isApproved = isApproved; - return this; - } - - public MemberBuilder WithIsLockedOut(bool isLockedOut) - { - _isLockedOut = isLockedOut; - return this; - } - - public MemberBuilder WithLastLockoutDate(DateTime lastLockoutDate) - { - _lastLockoutDate = lastLockoutDate; - return this; - } - - public MemberBuilder WithLastLoginDate(DateTime lastLoginDate) - { - _lastLoginDate = lastLoginDate; - return this; - } - - public MemberBuilder WithLastPasswordChangeDate(DateTime lastPasswordChangeDate) - { - _lastPasswordChangeDate = lastPasswordChangeDate; - return this; - } - public MemberBuilder WithPropertyIdsIncrementingFrom(int propertyIdsIncrementingFrom) { _propertyIdsIncrementingFrom = propertyIdsIncrementingFrom; @@ -139,19 +86,19 @@ namespace Umbraco.Tests.Common.Builders var updateDate = _updateDate ?? DateTime.Now; var name = _name ?? Guid.NewGuid().ToString(); var creatorId = _creatorId ?? 1; + var level = _level ?? 1; + var path = _path ?? "-1"; + var sortOrder = _sortOrder ?? 0; + var trashed = _trashed ?? false; var username = _username ?? string.Empty; var email = _email ?? string.Empty; var rawPasswordValue = _rawPasswordValue ?? string.Empty; var failedPasswordAttempts = _failedPasswordAttempts ?? 0; - var level = _level ?? 1; - var path = _path ?? "-1"; var isApproved = _isApproved ?? false; var isLockedOut = _isLockedOut ?? false; var lastLockoutDate = _lastLockoutDate ?? DateTime.Now; var lastLoginDate = _lastLoginDate ?? DateTime.Now; var lastPasswordChangeDate = _lastPasswordChangeDate ?? DateTime.Now; - var sortOrder = _sortOrder ?? 0; - var trashed = _trashed ?? false; if (_memberTypeBuilder == null) { @@ -276,5 +223,59 @@ namespace Umbraco.Tests.Common.Builders get => _sortOrder; set => _sortOrder = value; } + + string IWithLoginBuilder.Username + { + get => _username; + set => _username = value; + } + + string IWithLoginBuilder.RawPasswordValue + { + get => _rawPasswordValue; + set => _rawPasswordValue = value; + } + + string IWithEmailBuilder.Email + { + get => _email; + set => _email = value; + } + + int? IWithFailedPasswordAttemptsBuilder.FailedPasswordAttempts + { + get => _failedPasswordAttempts; + set => _failedPasswordAttempts = value; + } + + bool? IWithIsApprovedBuilder.IsApproved + { + get => _isApproved; + set => _isApproved = value; + } + + bool? IWithIsLockedOutBuilder.IsLockedOut + { + get => _isLockedOut; + set => _isLockedOut = value; + } + + DateTime? IWithIsLockedOutBuilder.LastLockoutDate + { + get => _lastLockoutDate; + set => _lastLockoutDate = value; + } + + DateTime? IWithLastLoginDateBuilder.LastLoginDate + { + get => _lastLoginDate; + set => _lastLoginDate = value; + } + + DateTime? IWithLastPasswordChangeDateBuilder.LastPasswordChangeDate + { + get => _lastPasswordChangeDate; + set => _lastPasswordChangeDate = value; + } } } diff --git a/src/Umbraco.Tests.Common/Builders/PropertyTypeBuilder.cs b/src/Umbraco.Tests.Common/Builders/PropertyTypeBuilder.cs index 9dc61014b5..9a16eb50e0 100644 --- a/src/Umbraco.Tests.Common/Builders/PropertyTypeBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/PropertyTypeBuilder.cs @@ -126,7 +126,7 @@ namespace Umbraco.Tests.Common.Builders ValidationRegExpMessage = validationRegExpMessage, }; } - + int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/RelationTypeBuilder.cs b/src/Umbraco.Tests.Common/Builders/RelationTypeBuilder.cs index 677d02bf09..243f5e3c96 100644 --- a/src/Umbraco.Tests.Common/Builders/RelationTypeBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/RelationTypeBuilder.cs @@ -33,6 +33,47 @@ namespace Umbraco.Tests.Common.Builders { } + public RelationTypeBuilder WithIsBidirectional(bool isBidirectional) + { + _isBidirectional = isBidirectional; + return this; + } + + public RelationTypeBuilder WithChildObjectType(Guid childObjectType) + { + _childObjectType = childObjectType; + return this; + } + + public RelationTypeBuilder WithParentObjectType(Guid parentObjectType) + { + _parentObjectType = parentObjectType; + return this; + } + + public override IRelationType Build() + { + var alias = _alias ?? Guid.NewGuid().ToString(); + var name = _name ?? Guid.NewGuid().ToString(); + var parentObjectType = _parentObjectType ?? null; + var childObjectType = _childObjectType ?? null; + var id = _id ?? 1; + var key = _key ?? Guid.NewGuid(); + var isBidirectional = _isBidirectional ?? false; + var createDate = _createDate ?? DateTime.Now; + var updateDate = _updateDate ?? DateTime.Now; + var deleteDate = _deleteDate ?? null; + + return new RelationType(name, alias, isBidirectional, parentObjectType, childObjectType) + { + Id = id, + Key = key, + CreateDate = createDate, + UpdateDate = updateDate, + DeleteDate = deleteDate + }; + } + string IWithAliasBuilder.Alias { get => _alias; @@ -74,46 +115,5 @@ namespace Umbraco.Tests.Common.Builders get => _updateDate; set => _updateDate = value; } - - public override IRelationType Build() - { - var alias = _alias ?? Guid.NewGuid().ToString(); - var name = _name ?? Guid.NewGuid().ToString(); - var parentObjectType = _parentObjectType ?? null; - var childObjectType = _childObjectType ?? null; - var id = _id ?? 1; - var key = _key ?? Guid.NewGuid(); - var isBidirectional = _isBidirectional ?? false; - var createDate = _createDate ?? DateTime.Now; - var updateDate = _updateDate ?? DateTime.Now; - var deleteDate = _deleteDate ?? null; - - return new RelationType(name, alias, isBidirectional, parentObjectType, childObjectType) - { - Id = id, - Key = key, - CreateDate = createDate, - UpdateDate = updateDate, - DeleteDate = deleteDate - }; - } - - public RelationTypeBuilder WithIsBidirectional(bool isBidirectional) - { - _isBidirectional = isBidirectional; - return this; - } - - public RelationTypeBuilder WithChildObjectType(Guid childObjectType) - { - _childObjectType = childObjectType; - return this; - } - - public RelationTypeBuilder WithParentObjectType(Guid parentObjectType) - { - _parentObjectType = parentObjectType; - return this; - } } } diff --git a/src/Umbraco.Tests.Common/Builders/SmtpSettingsBuilder.cs b/src/Umbraco.Tests.Common/Builders/SmtpSettingsBuilder.cs index 3120cc95f6..344d7bcf87 100644 --- a/src/Umbraco.Tests.Common/Builders/SmtpSettingsBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/SmtpSettingsBuilder.cs @@ -9,65 +9,64 @@ namespace Umbraco.Tests.Common.Builders } } - public class SmtpSettingsBuilder - : ChildBuilderBase - { - private string _from; - private string _host; - private int? _port; - private string _pickupDirectoryLocation; + public class SmtpSettingsBuilder + : ChildBuilderBase + { + private string _from; + private string _host; + private int? _port; + private string _pickupDirectoryLocation; - public SmtpSettingsBuilder(TParent parentBuilder) : base(parentBuilder) - { - } + public SmtpSettingsBuilder(TParent parentBuilder) : base(parentBuilder) + { + } - public SmtpSettingsBuilder WithFrom(string from) - { - _from = from; - return this; - } + public SmtpSettingsBuilder WithFrom(string from) + { + _from = from; + return this; + } - public SmtpSettingsBuilder WithHost(string host) - { - _host = host; - return this; - } + public SmtpSettingsBuilder WithHost(string host) + { + _host = host; + return this; + } - public SmtpSettingsBuilder WithPost(int port) - { - _port = port; - return this; - } + public SmtpSettingsBuilder WithPost(int port) + { + _port = port; + return this; + } - public SmtpSettingsBuilder WithPickupDirectoryLocation(string pickupDirectoryLocation) - { - _pickupDirectoryLocation = pickupDirectoryLocation; - return this; - } + public SmtpSettingsBuilder WithPickupDirectoryLocation(string pickupDirectoryLocation) + { + _pickupDirectoryLocation = pickupDirectoryLocation; + return this; + } + public override ISmtpSettings Build() + { + var from = _from ?? null; + var host = _host ?? null; + var port = _port ?? 25; + var pickupDirectoryLocation = _pickupDirectoryLocation ?? null; - public override ISmtpSettings Build() - { - var from = _from ?? null; - var host = _host ?? null; - var port = _port ?? 25; - var pickupDirectoryLocation = _pickupDirectoryLocation ?? null; - - return new TestSmtpSettings() - { + return new TestSmtpSettings() + { From = from, Host = host, Port = port, PickupDirectoryLocation = pickupDirectoryLocation, - }; - } + }; + } - private class TestSmtpSettings : ISmtpSettings - { - public string From { get; set; } - public string Host { get; set; } - public int Port { get; set; } - public string PickupDirectoryLocation { get; set; } - } - } + private class TestSmtpSettings : ISmtpSettings + { + public string From { get; set; } + public string Host { get; set; } + public int Port { get; set; } + public string PickupDirectoryLocation { get; set; } + } + } } diff --git a/src/Umbraco.Tests.Common/Builders/TemplateBuilder.cs b/src/Umbraco.Tests.Common/Builders/TemplateBuilder.cs index 7f7fa0f098..3948d285d3 100644 --- a/src/Umbraco.Tests.Common/Builders/TemplateBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/TemplateBuilder.cs @@ -57,6 +57,7 @@ namespace Umbraco.Tests.Common.Builders var masterTemplateId = _masterTemplateId ?? null; var shortStringHelper = new DefaultShortStringHelper(new DefaultShortStringHelperConfig()); + return new Template(shortStringHelper, name, alias) { Id = id, diff --git a/src/Umbraco.Tests.Common/Builders/UserBuilder.cs b/src/Umbraco.Tests.Common/Builders/UserBuilder.cs index cb24e0e8dc..9dd9ff047f 100644 --- a/src/Umbraco.Tests.Common/Builders/UserBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/UserBuilder.cs @@ -1,41 +1,69 @@ -using Umbraco.Configuration.Models; +using System; using Umbraco.Core.Models.Membership; using Umbraco.Tests.Common.Builders.Interfaces; namespace Umbraco.Tests.Common.Builders { - public class UserBuilder : UserBuilder { public UserBuilder() : base(null) { } } - public class UserBuilder : ChildBuilderBase, IWithIdBuilder, + IWithKeyBuilder, + IWithCreateDateBuilder, + IWithUpdateDateBuilder, IWithNameBuilder, - IWithApprovedBuilder + IAccountBuilder { private int? _id; + private Guid? _key; + private DateTime? _createDate; + private DateTime? _updateDate; private string _language; - private bool? _approved; private string _name; - private string _rawPassword; - private bool? _isLockedOut; - private string _email; private string _username; + private string _rawPasswordValue; + private string _email; + private int? _failedPasswordAttempts; + private bool? _isApproved; + private bool? _isLockedOut; + private DateTime? _lastLockoutDate; + private DateTime? _lastLoginDate; + private DateTime? _lastPasswordChangeDate; private string _suffix = string.Empty; private string _defaultLang; - + private string _comments; + private int? _sessionTimeout; + private int[] _startContentIds; + private int[] _startMediaIds; public UserBuilder(TParent parentBuilder) : base(parentBuilder) { - } - public UserBuilder WithDefaultUILanguage(string defaultLang) + Guid? IWithKeyBuilder.Key + { + get => _key; + set => _key = value; + } + + DateTime? IWithCreateDateBuilder.CreateDate + { + get => _createDate; + set => _createDate = value; + } + + DateTime? IWithUpdateDateBuilder.UpdateDate + { + get => _updateDate; + set => _updateDate = value; + } + + public UserBuilder WithDefaultUILanguage(string defaultLang) { _defaultLang = defaultLang; return this; @@ -47,27 +75,27 @@ namespace Umbraco.Tests.Common.Builders return this; } - public UserBuilder WithRawPassword(string rawPassword) + public UserBuilder WithComments(string comments) { - _rawPassword = rawPassword; + _comments = comments; return this; } - public UserBuilder WithEmail(string email) + public UserBuilder WithSessionTimeout(int sessionTimeout) { - _email = email; + _sessionTimeout = sessionTimeout; return this; } - public UserBuilder WithUsername(string username) + public UserBuilder WithStartContentIds(int[] startContentIds) { - _username = username; + _startContentIds = startContentIds; return this; } - public UserBuilder WithLockedOut(bool isLockedOut) + public UserBuilder WithStartMediaIds(int[] startMediaIds) { - _isLockedOut = isLockedOut; + _startMediaIds = startMediaIds; return this; } @@ -84,25 +112,50 @@ namespace Umbraco.Tests.Common.Builders public override User Build() { - var globalSettings = new GlobalSettingsBuilder().WithDefaultUiLanguage(_defaultLang).Build(); + var id = _id ?? 1; + var defaultLang = _defaultLang ?? "en"; + var globalSettings = new GlobalSettingsBuilder().WithDefaultUiLanguage(defaultLang).Build(); + var key = _key ?? Guid.NewGuid(); + var createDate = _createDate ?? DateTime.Now; + var updateDate = _updateDate ?? DateTime.Now; 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 username = _username ?? "TestUser" + _suffix; + var email = _email ?? "test" + _suffix + "@test.com"; + var rawPasswordValue = _rawPasswordValue ?? "abcdefghijklmnopqrstuvwxyz"; + var failedPasswordAttempts = _failedPasswordAttempts ?? 0; + var isApproved = _isApproved ?? false; var isLockedOut = _isLockedOut ?? false; - var approved = _approved ?? true; + var lastLockoutDate = _lastLockoutDate ?? DateTime.Now; + var lastLoginDate = _lastLoginDate ?? DateTime.Now; + var lastPasswordChangeDate = _lastPasswordChangeDate ?? DateTime.Now; + var comments = _comments ?? string.Empty; + var sessionTimeout = _sessionTimeout ?? 0; + var startContentIds = _startContentIds ?? new int[0]; + var startMediaIds = _startMediaIds ?? new int[0]; return new User( globalSettings, name, email, username, - rawPassword) + rawPasswordValue) { + Id = id, + Key = key, + CreateDate = createDate, + UpdateDate = updateDate, Language = language, + FailedPasswordAttempts = failedPasswordAttempts, + IsApproved = isApproved, IsLockedOut = isLockedOut, - IsApproved = approved + LastLockoutDate = lastLockoutDate, + LastLoginDate = lastLoginDate, + LastPasswordChangeDate = lastPasswordChangeDate, + Comments = comments, + SessionTimeout = sessionTimeout, + StartContentIds = startContentIds, + StartMediaIds = startMediaIds, }; } @@ -118,10 +171,58 @@ namespace Umbraco.Tests.Common.Builders set => _name = value; } - bool? IWithApprovedBuilder.Approved + string IWithLoginBuilder.Username { - get => _approved; - set => _approved = value; + get => _username; + set => _username = value; + } + + string IWithLoginBuilder.RawPasswordValue + { + get => _rawPasswordValue; + set => _rawPasswordValue = value; + } + + string IWithEmailBuilder.Email + { + get => _email; + set => _email = value; + } + + int? IWithFailedPasswordAttemptsBuilder.FailedPasswordAttempts + { + get => _failedPasswordAttempts; + set => _failedPasswordAttempts = value; + } + + bool? IWithIsApprovedBuilder.IsApproved + { + get => _isApproved; + set => _isApproved = value; + } + + bool? IWithIsLockedOutBuilder.IsLockedOut + { + get => _isLockedOut; + set => _isLockedOut = value; + } + + DateTime? IWithIsLockedOutBuilder.LastLockoutDate + { + get => _lastLockoutDate; + set => _lastLockoutDate = value; + } + + DateTime? IWithLastLoginDateBuilder.LastLoginDate + { + get => _lastLoginDate; + set => _lastLoginDate = value; + } + + DateTime? IWithLastPasswordChangeDateBuilder.LastPasswordChangeDate + { + get => _lastPasswordChangeDate; + set => _lastPasswordChangeDate = value; } } } diff --git a/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs b/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs index 4c6bb7a74c..840cf80dd5 100644 --- a/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs @@ -6,7 +6,6 @@ using Umbraco.Tests.Common.Builders.Interfaces; namespace Umbraco.Tests.Common.Builders { - public class UserGroupBuilder : UserGroupBuilder { public UserGroupBuilder() : base(null) @@ -61,7 +60,7 @@ namespace Umbraco.Tests.Common.Builders public override IUserGroup Build() { - return Mock.Of(x => + var userGroup = Mock.Of(x => x.StartContentId == _startContentId && x.StartMediaId == _startMediaId && x.Name == (_name ?? ("TestUserGroup" + _suffix)) && @@ -69,9 +68,10 @@ namespace Umbraco.Tests.Common.Builders x.Icon == _icon && x.Permissions == _permissions && x.AllowedSections == _sectionCollection); + return userGroup; } - int? IWithIdBuilder.Id + int? IWithIdBuilder.Id { get => _id; set => _id = value; diff --git a/src/Umbraco.Tests.Integration/Persistence/Repositories/UserRepositoryTest.cs b/src/Umbraco.Tests.Integration/Persistence/Repositories/UserRepositoryTest.cs index 7feb69f0c6..23c9e398d3 100644 --- a/src/Umbraco.Tests.Integration/Persistence/Repositories/UserRepositoryTest.cs +++ b/src/Umbraco.Tests.Integration/Persistence/Repositories/UserRepositoryTest.cs @@ -1,21 +1,19 @@ -using System.Linq; +using System; +using System.Linq; using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; +using Umbraco.Core.Configuration; using Umbraco.Core.Models.Membership; +using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.Repositories.Implement; using Umbraco.Core.Scoping; -using Umbraco.Tests.Testing; -using Umbraco.Core.Persistence; -using Umbraco.Core.PropertyEditors; -using System; -using Umbraco.Core.Configuration; -using Umbraco.Core.Services.Implement; +using Umbraco.Tests.Common.Builders.Extensions; using Umbraco.Tests.Integration.Testing; +using Umbraco.Tests.Testing; namespace Umbraco.Tests.Persistence.Repositories { @@ -89,7 +87,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var repository = CreateRepository(provider); - var user = UserBuilder.Build(); + var user = UserBuilder.WithoutIdentity().Build(); repository.Save(user); @@ -367,10 +365,9 @@ namespace Umbraco.Tests.Persistence.Repositories private User CreateAndCommitUserWithGroup(IUserRepository repository, IUserGroupRepository userGroupRepository) { - var user = UserBuilder.Build(); + var user = UserBuilder.WithoutIdentity().Build(); repository.Save(user); - var group = UserGroupBuilder.Build(); userGroupRepository.AddOrUpdateGroupWithUsers(@group, new[] { user.Id }); @@ -381,9 +378,9 @@ namespace Umbraco.Tests.Persistence.Repositories private IUser[] CreateAndCommitMultipleUsers(IUserRepository repository) { - var user1 = UserBuilder.WithSuffix("1").Build(); - var user2 = UserBuilder.WithSuffix("2").Build(); - var user3 = UserBuilder.WithSuffix("3").Build(); + var user1 = UserBuilder.WithoutIdentity().WithSuffix("1").Build(); + var user2 = UserBuilder.WithoutIdentity().WithSuffix("2").Build(); + var user3 = UserBuilder.WithoutIdentity().WithSuffix("3").Build(); repository.Save(user1); repository.Save(user2); repository.Save(user3); diff --git a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs index 0f3895cfbf..101feb79a4 100644 --- a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs +++ b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs @@ -1,11 +1,8 @@ using System; -using System.Collections.Generic; -using System.IO; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -using NPoco.Expressions; using NUnit.Framework; using Umbraco.Core.Cache; using Umbraco.Core.Composing; @@ -21,7 +18,6 @@ using Umbraco.Tests.Common.Builders; using Umbraco.Tests.Integration.Extensions; using Umbraco.Tests.Integration.Implementations; using Umbraco.Web.BackOffice.AspNetCore; -using Umbraco.Web.Common.AspNetCore; using Umbraco.Web.Common.Extensions; namespace Umbraco.Tests.Integration.Testing diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/DataTypeTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/DataTypeTests.cs index ba1e500d5a..b94effb907 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/DataTypeTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/DataTypeTests.cs @@ -9,7 +9,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [TestFixture] public class DataTypeTests { - private readonly DataTypeBuilder _builder = new DataTypeBuilder(); + private DataTypeBuilder _builder; + + [SetUp] + public void SetUp() + { + _builder = new DataTypeBuilder(); + } [Test] public void Can_Deep_Clone() diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/DictionaryItemTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/DictionaryItemTests.cs index 28878a2463..44a62521f3 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/DictionaryItemTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/DictionaryItemTests.cs @@ -9,7 +9,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [TestFixture] public class DictionaryItemTests { - private readonly DictionaryItemBuilder _builder = new DictionaryItemBuilder(); + private DictionaryItemBuilder _builder = new DictionaryItemBuilder(); + + [SetUp] + public void SetUp() + { + _builder = new DictionaryItemBuilder(); + } [Test] public void Can_Deep_Clone() diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/LanguageTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/LanguageTests.cs index bb82e69fa6..4dcf1a7a97 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/LanguageTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/LanguageTests.cs @@ -8,7 +8,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [TestFixture] public class LanguageTests { - private readonly LanguageBuilder _builder = new LanguageBuilder(); + private LanguageBuilder _builder = new LanguageBuilder(); + + [SetUp] + public void SetUp() + { + _builder = new LanguageBuilder(); + } [Test] public void Can_Deep_Clone() diff --git a/src/Umbraco.Tests/Models/MacroTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MacroTests.cs similarity index 63% rename from src/Umbraco.Tests/Models/MacroTests.cs rename to src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MacroTests.cs index 9ebe57a847..9137c67e7e 100644 --- a/src/Umbraco.Tests/Models/MacroTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MacroTests.cs @@ -3,18 +3,42 @@ using System.Linq; using NUnit.Framework; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; -using Umbraco.Tests.TestHelpers; +using Umbraco.Tests.Common.Builders; +using Umbraco.Tests.Common.Builders.Extensions; -namespace Umbraco.Tests.Models +namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models { [TestFixture] public class MacroTests { + private MacroBuilder _builder; + + [SetUp] + public void SetUp() + { + _builder = new MacroBuilder(); + } + [Test] public void Can_Deep_Clone() { - var macro = new Macro(TestHelper.ShortStringHelper, 1, Guid.NewGuid(), true, 3, "test", "Test", false, true, true, "~/script.cshtml"); - macro.Properties.Add(new MacroProperty(6, Guid.NewGuid(), "rewq", "REWQ", 1, "asdfasdf")); + var macro = _builder + .WithId(1) + .WithUseInEditor(true) + .WithCacheDuration(3) + .WithAlias("test") + .WithName("Test") + .WithSource("~/script.cshtml") + .WithCacheByMember(true) + .WithDontRender(true) + .AddProperty() + .WithId(6) + .WithAlias("rewq") + .WithName("REWQ") + .WithSortOrder(1) + .WithEditorAlias("asdfasdf") + .Done() + .Build(); var clone = (Macro)macro.DeepClone(); @@ -24,7 +48,7 @@ namespace Umbraco.Tests.Models Assert.AreEqual(clone.Properties.Count, macro.Properties.Count); - for (int i = 0; i < clone.Properties.Count; i++) + for (var i = 0; i < clone.Properties.Count; i++) { Assert.AreEqual(clone.Properties[i], macro.Properties[i]); Assert.AreNotSame(clone.Properties[i], macro.Properties[i]); @@ -37,9 +61,7 @@ namespace Umbraco.Tests.Models //This double verifies by reflection var allProps = clone.GetType().GetProperties(); foreach (var propertyInfo in allProps) - { Assert.AreEqual(propertyInfo.GetValue(clone, null), propertyInfo.GetValue(macro, null)); - } //need to ensure the event handlers are wired @@ -51,8 +73,6 @@ namespace Umbraco.Tests.Models Assert.AreEqual(1, clone.AddedProperties.Count()); clone.Properties.Remove("rewq"); Assert.AreEqual(1, clone.RemovedProperties.Count()); - } - } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MemberGroupTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MemberGroupTests.cs index 91ccd56b9e..6c539c969a 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MemberGroupTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MemberGroupTests.cs @@ -11,7 +11,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [TestFixture] public class MemberGroupTests { - private readonly MemberGroupBuilder _builder = new MemberGroupBuilder(); + private MemberGroupBuilder _builder; + + [SetUp] + public void SetUp() + { + _builder = new MemberGroupBuilder(); + } [Test] public void Can_Deep_Clone() diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MemberTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MemberTests.cs index 1ac255db39..73cce19cab 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MemberTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MemberTests.cs @@ -13,7 +13,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [TestFixture] public class MemberTests { - private readonly MemberBuilder _builder = new MemberBuilder(); + private MemberBuilder _builder; + + [SetUp] + public void SetUp() + { + _builder = new MemberBuilder(); + } [Test] public void Can_Deep_Clone() @@ -116,14 +122,10 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models .Done() .Done() .WithId(10) - .WithKey(Guid.NewGuid()) .WithName("Fred") - .WithUserName("fred") - .WithRawPasswordValue("raw pass") + .WithLogin("fred", "raw pass") .WithEmail("email@email.com") .WithCreatorId(22) - .WithCreateDate(DateTime.Now) - .WithUpdateDate(DateTime.Now) .WithFailedPasswordAttempts(22) .WithLevel(3) .WithPath("-1, 4, 10") diff --git a/src/Umbraco.Tests/Models/PathValidationTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs similarity index 65% rename from src/Umbraco.Tests/Models/PathValidationTests.cs rename to src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs index dab362cc35..017d2c7774 100644 --- a/src/Umbraco.Tests/Models/PathValidationTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs @@ -4,16 +4,28 @@ using NUnit.Framework; using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; +using Umbraco.Tests.Common.Builders; +using Umbraco.Tests.Common.Builders.Extensions; -namespace Umbraco.Tests.Models +namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models { [TestFixture] public class PathValidationTests { + private EntitySlimBuilder _builder; + + [SetUp] + public void SetUp() + { + _builder = new EntitySlimBuilder(); + } + [Test] public void Validate_Path() { - var entity = new EntitySlim(); + var entity = _builder + .WithoutIdentity() + .Build(); //it's empty with no id so we need to allow it Assert.IsTrue(entity.ValidatePath()); @@ -37,7 +49,9 @@ namespace Umbraco.Tests.Models [Test] public void Ensure_Path_Throws_Without_Id() { - var entity = new EntitySlim(); + var entity = _builder + .WithoutIdentity() + .Build(); //no id assigned Assert.Throws(() => entity.EnsureValidPath(Mock.Of(), umbracoEntity => new EntitySlim(), umbracoEntity => { })); @@ -46,7 +60,10 @@ namespace Umbraco.Tests.Models [Test] public void Ensure_Path_Throws_Without_Parent() { - var entity = new EntitySlim { Id = 1234 }; + var entity = _builder + .WithId(1234) + .WithNoParentId() + .Build(); //no parent found Assert.Throws(() => entity.EnsureValidPath(Mock.Of(), umbracoEntity => null, umbracoEntity => { })); @@ -55,12 +72,9 @@ namespace Umbraco.Tests.Models [Test] public void Ensure_Path_Entity_At_Root() { - var entity = new EntitySlim - { - Id = 1234, - ParentId = -1 - }; - + var entity = _builder + .WithId(1234) + .Build(); entity.EnsureValidPath(Mock.Of(), umbracoEntity => null, umbracoEntity => { }); @@ -71,11 +85,10 @@ namespace Umbraco.Tests.Models [Test] public void Ensure_Path_Entity_Valid_Parent() { - var entity = new EntitySlim - { - Id = 1234, - ParentId = 888 - }; + var entity = _builder + .WithId(1234) + .WithParentId(888) + .Build(); entity.EnsureValidPath(Mock.Of(), umbracoEntity => umbracoEntity.ParentId == 888 ? new EntitySlim { Id = 888, Path = "-1,888" } : null, umbracoEntity => { }); @@ -86,29 +99,28 @@ namespace Umbraco.Tests.Models [Test] public void Ensure_Path_Entity_Valid_Recursive_Parent() { - var parentA = new EntitySlim - { - Id = 999, - ParentId = -1 - }; + var parentA = _builder + .WithId(999) + .Build(); - var parentB = new EntitySlim - { - Id = 888, - ParentId = 999 - }; + // Re-creating the class-level builder as we need to reset before usage when creating multiple entities. + _builder = new EntitySlimBuilder(); + var parentB = _builder + .WithId(888) + .WithParentId(999) + .Build(); - var parentC = new EntitySlim - { - Id = 777, - ParentId = 888 - }; + _builder = new EntitySlimBuilder(); + var parentC = _builder + .WithId(777) + .WithParentId(888) + .Build(); - var entity = new EntitySlim - { - Id = 1234, - ParentId = 777 - }; + _builder = new EntitySlimBuilder(); + var entity = _builder + .WithId(1234) + .WithParentId(777) + .Build(); Func getParent = umbracoEntity => { @@ -136,4 +148,4 @@ namespace Umbraco.Tests.Models Assert.AreEqual("-1,999,888,777,1234", entity.Path); } } -} \ No newline at end of file +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PropertyGroupTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PropertyGroupTests.cs index bb7c2ec6d8..a56b0685fc 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PropertyGroupTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PropertyGroupTests.cs @@ -11,7 +11,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [TestFixture] public class PropertyGroupTests { - private readonly PropertyGroupBuilder _builder = new PropertyGroupBuilder(); + private PropertyGroupBuilder _builder; + + [SetUp] + public void SetUp() + { + _builder = new PropertyGroupBuilder(); + } [Test] public void Can_Deep_Clone() diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PropertyTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PropertyTests.cs index 6d0e4f8d56..0668762ab8 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PropertyTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PropertyTests.cs @@ -10,7 +10,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [TestFixture] public class PropertyTests { - private readonly PropertyBuilder _builder = new PropertyBuilder(); + private PropertyBuilder _builder; + + [SetUp] + public void SetUp() + { + _builder = new PropertyBuilder(); + } [Test] public void Can_Deep_Clone() diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PropertyTypeTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PropertyTypeTests.cs index ce90f1d3b7..ac1427589b 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PropertyTypeTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PropertyTypeTests.cs @@ -13,7 +13,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [TestFixture] public class PropertyTypeTests { - private readonly PropertyTypeBuilder _builder = new PropertyTypeBuilder(); + private PropertyTypeBuilder _builder; + + [SetUp] + public void SetUp() + { + _builder = new PropertyTypeBuilder(); + } [Test] public void Can_Deep_Clone() diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/RelationTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/RelationTests.cs index c21fc250d9..3a6c85c721 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/RelationTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/RelationTests.cs @@ -11,7 +11,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [TestFixture] public class RelationTests { - private readonly RelationBuilder _builder = new RelationBuilder(); + private RelationBuilder _builder; + + [SetUp] + public void SetUp() + { + _builder = new RelationBuilder(); + } [Test] public void Can_Deep_Clone() diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/RelationTypeTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/RelationTypeTests.cs index 924420fd55..5f965af386 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/RelationTypeTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/RelationTypeTests.cs @@ -9,7 +9,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [TestFixture] public class RelationTypeTests { - private readonly RelationTypeBuilder _builder = new RelationTypeBuilder(); + private RelationTypeBuilder _builder; + + [SetUp] + public void SetUp() + { + _builder = new RelationTypeBuilder(); + } [Test] public void Can_Deep_Clone() diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/StylesheetTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/StylesheetTests.cs index b0f94294cd..a2964cd54a 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/StylesheetTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/StylesheetTests.cs @@ -10,7 +10,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [TestFixture] public class StylesheetTests { - private readonly StylesheetBuilder _builder = new StylesheetBuilder(); + private StylesheetBuilder _builder; + + [SetUp] + public void SetUp() + { + _builder = new StylesheetBuilder(); + } [Test] public void Can_Create_Stylesheet() diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/TemplateTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/TemplateTests.cs index df9e0c9ee1..c139e37682 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/TemplateTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/TemplateTests.cs @@ -6,7 +6,6 @@ using Newtonsoft.Json; using NUnit.Framework; using Umbraco.Core.Models; using Umbraco.Tests.Common.Builders; - using Umbraco.Tests.Common.Builders.Extensions; namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models @@ -14,7 +13,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [TestFixture] public class TemplateTests { - private readonly TemplateBuilder _builder = new TemplateBuilder(); + private TemplateBuilder _builder; + + [SetUp] + public void SetUp() + { + _builder = new TemplateBuilder(); + } [Test] public void Can_Deep_Clone() diff --git a/src/Umbraco.Tests/Models/UserExtensionsTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserExtensionsTests.cs similarity index 91% rename from src/Umbraco.Tests/Models/UserExtensionsTests.cs rename to src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserExtensionsTests.cs index bf76031b59..d3d59e77ba 100644 --- a/src/Umbraco.Tests/Models/UserExtensionsTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserExtensionsTests.cs @@ -5,14 +5,22 @@ using Moq; using NUnit.Framework; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; -using Umbraco.Core.Models.Membership; using Umbraco.Core.Services; +using Umbraco.Tests.Common.Builders; -namespace Umbraco.Tests.Models +namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models { [TestFixture] public class UserExtensionsTests { + private UserBuilder _userBuilder; + + [SetUp] + public void SetUp() + { + _userBuilder = new UserBuilder(); + } + [TestCase(-1, "-1", "-1,1,2,3,4,5", true)] // below root start node [TestCase(2, "-1,1,2", "-1,1,2,3,4,5", true)] // below start node [TestCase(5, "-1,1,2,3,4,5", "-1,1,2,3,4,5", true)] // at start node @@ -24,9 +32,10 @@ namespace Umbraco.Tests.Models public void Determines_Path_Based_Access_To_Content(int startNodeId, string startNodePath, string contentPath, bool outcome) { - var userMock = new Mock(); - userMock.Setup(u => u.StartContentIds).Returns(new[] { startNodeId }); - var user = userMock.Object; + var user = _userBuilder + .WithStartContentIds(new[] { startNodeId }) + .Build(); + var content = Mock.Of(c => c.Path == contentPath && c.Id == 5); var esmock = new Mock(); diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserTests.cs new file mode 100644 index 0000000000..db0761b165 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserTests.cs @@ -0,0 +1,67 @@ +using System; +using System.Diagnostics; +using System.Linq; +using Newtonsoft.Json; +using NUnit.Framework; +using Umbraco.Core.Models.Membership; +using Umbraco.Tests.Common.Builders; +using Umbraco.Tests.Common.Builders.Extensions; + +namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models +{ + [TestFixture] + public class UserTests + { + private UserBuilder _builder; + + [SetUp] + public void SetUp() + { + _builder = new UserBuilder(); + } + + [Test] + public void Can_Deep_Clone() + { + var item = BuildUser(); + + var clone = (User)item.DeepClone(); + + Assert.AreNotSame(clone, item); + Assert.AreEqual(clone, item); + + Assert.AreEqual(clone.AllowedSections.Count(), item.AllowedSections.Count()); + + //Verify normal properties with reflection + var allProps = clone.GetType().GetProperties(); + foreach (var propertyInfo in allProps) + Assert.AreEqual(propertyInfo.GetValue(clone, null), propertyInfo.GetValue(item, null)); + } + + [Test] + public void Can_Serialize_Without_Error() + { + var item = BuildUser(); + + var json = JsonConvert.SerializeObject(item); + Debug.Print(json); + } + + private User BuildUser() + { + return _builder + .WithId(3) + .WithLogin("username", "test pass") + .WithName("Test") + .WithEmail("test@test.com") + .WithFailedPasswordAttempts(3) + .WithIsApproved(true) + .WithIsLockedOut(true) + .WithComments("comments") + .WithSessionTimeout(5) + .WithStartContentIds(new[] { 3 }) + .WithStartMediaIds(new[] { 8 }) + .Build(); + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/MacroBuilderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/MacroBuilderTests.cs new file mode 100644 index 0000000000..bf5d899d6a --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/MacroBuilderTests.cs @@ -0,0 +1,73 @@ +using System; +using NUnit.Framework; +using Umbraco.Tests.Common.Builders; +using Umbraco.Tests.Common.Builders.Extensions; + +namespace Umbraco.Tests.UnitTests.Umbraco.Tests.Common.Builders +{ + [TestFixture] + public class MacroBuilderTests + { + [Test] + public void Is_Built_Correctly() + { + // Arrange + const int id = 1; + var key = Guid.NewGuid(); + const bool useInEditor = true; + const int cacheDuration = 3; + const string alias = "test"; + const string name = "Test"; + const string source = "~/script.cshtml"; + const bool cacheByPage = false; + const bool cacheByMember = true; + const bool dontRender = true; + const int propertyId = 6; + const string propertyAlias = "rewq"; + const string propertyName = "REWQ"; + const int propertySortOrder = 1; + const string propertyEditorAlias = "asdfasdf"; + + var builder = new MacroBuilder(); + + // Act + var macro = builder + .WithId(id) + .WithKey(key) + .WithUseInEditor(useInEditor) + .WithCacheDuration(cacheDuration) + .WithAlias(alias) + .WithName(name) + .WithSource(source) + .WithCacheByPage(cacheByPage) + .WithCacheByMember(cacheByMember) + .WithDontRender(dontRender) + .AddProperty() + .WithId(propertyId) + .WithAlias(propertyAlias) + .WithName(propertyName) + .WithSortOrder(propertySortOrder) + .WithEditorAlias(propertyEditorAlias) + .Done() + .Build(); + + // Assert + Assert.AreEqual(id, macro.Id); + Assert.AreEqual(key, macro.Key); + Assert.AreEqual(useInEditor, macro.UseInEditor); + Assert.AreEqual(cacheDuration, macro.CacheDuration); + Assert.AreEqual(alias, macro.Alias); + Assert.AreEqual(name, macro.Name); + Assert.AreEqual(source, macro.MacroSource); + Assert.AreEqual(cacheByPage, macro.CacheByPage); + Assert.AreEqual(cacheByMember, macro.CacheByMember); + Assert.AreEqual(dontRender, macro.DontRender); + Assert.AreEqual(1, macro.Properties.Count); + Assert.AreEqual(propertyId, macro.Properties[0].Id); + Assert.AreEqual(propertyAlias, macro.Properties[0].Alias); + Assert.AreEqual(propertyName, macro.Properties[0].Name); + Assert.AreEqual(propertySortOrder, macro.Properties[0].SortOrder); + Assert.AreEqual(propertyEditorAlias, macro.Properties[0].EditorAlias); + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/MemberBuilderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/MemberBuilderTests.cs index 42d239eff6..386db34a74 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/MemberBuilderTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/MemberBuilderTests.cs @@ -48,6 +48,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Tests.Common.Builders var testKey = Guid.NewGuid(); var testCreateDate = DateTime.Now.AddHours(-1); var testUpdateDate = DateTime.Now; + const int testFailedPasswordAttempts = 22; var testLastLockoutDate = DateTime.Now.AddHours(-2); var testLastLoginDate = DateTime.Now.AddHours(-3); var testLastPasswordChangeDate = DateTime.Now.AddHours(-4); @@ -104,18 +105,16 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Tests.Common.Builders .WithId(testId) .WithKey(testKey) .WithName(testName) - .WithUserName(testUsername) - .WithRawPasswordValue(testRawPasswordValue) + .WithLogin(testUsername, testRawPasswordValue) .WithEmail(testEmail) .WithCreatorId(testCreatorId) .WithCreateDate(testCreateDate) .WithUpdateDate(testUpdateDate) - .WithFailedPasswordAttempts(22) .WithLevel(testLevel) .WithPath(testPath) + .WithFailedPasswordAttempts(testFailedPasswordAttempts) .WithIsApproved(testIsApproved) - .WithIsLockedOut(testIsLockedOut) - .WithLastLockoutDate(testLastLockoutDate) + .WithIsLockedOut(testIsLockedOut, testLastLockoutDate) .WithLastLoginDate(testLastLoginDate) .WithLastPasswordChangeDate(testLastPasswordChangeDate) .WithSortOrder(testSortOrder) @@ -146,6 +145,12 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Tests.Common.Builders Assert.AreEqual(testCreateDate, member.CreateDate); Assert.AreEqual(testUpdateDate, member.UpdateDate); Assert.AreEqual(testCreatorId, member.CreatorId); + Assert.AreEqual(testFailedPasswordAttempts, member.FailedPasswordAttempts); + Assert.AreEqual(testIsApproved, member.IsApproved); + Assert.AreEqual(testIsLockedOut, member.IsLockedOut); + Assert.AreEqual(testLastLockoutDate, member.LastLockoutDate); + Assert.AreEqual(testLastLoginDate, member.LastLoginDate); + Assert.AreEqual(testLastPasswordChangeDate, member.LastPasswordChangeDate); Assert.AreEqual(testGroups, member.Groups.ToArray()); Assert.AreEqual(10, member.Properties.Count); // 7 from membership properties group, 3 custom Assert.AreEqual(testPropertyData1.Value, member.GetValue(testPropertyData1.Key)); diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/UserBuilderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/UserBuilderTests.cs new file mode 100644 index 0000000000..5b3b0595a3 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/UserBuilderTests.cs @@ -0,0 +1,74 @@ +using System; +using NUnit.Framework; +using Umbraco.Tests.Common.Builders; +using Umbraco.Tests.Common.Builders.Extensions; + +namespace Umbraco.Tests.UnitTests.Umbraco.Tests.Common.Builders +{ + [TestFixture] + public class UserBuilderTests + { + [Test] + public void Is_Built_Correctly() + { + // Arrange + const int testId = 10; + const string testName = "Fred"; + const string testUsername = "fred"; + const string testRawPasswordValue = "raw pass"; + const string testEmail = "email@email.com"; + const bool testIsApproved = true; + const bool testIsLockedOut = true; + var testKey = Guid.NewGuid(); + var testCreateDate = DateTime.Now.AddHours(-1); + var testUpdateDate = DateTime.Now; + const int testFailedPasswordAttempts = 22; + var testLastLockoutDate = DateTime.Now.AddHours(-2); + var testLastLoginDate = DateTime.Now.AddHours(-3); + var testLastPasswordChangeDate = DateTime.Now.AddHours(-4); + var testComments = "comments"; + var testSessionTimeout = 5; + var testStartContentIds = new[] { 3 }; + var testStartMediaIds = new[] { 8 }; + + var builder = new UserBuilder(); + + // Act + var user = builder + .WithId(testId) + .WithKey(testKey) + .WithName(testName) + .WithLogin(testUsername, testRawPasswordValue) + .WithEmail(testEmail) + .WithCreateDate(testCreateDate) + .WithUpdateDate(testUpdateDate) + .WithFailedPasswordAttempts(testFailedPasswordAttempts) + .WithIsApproved(testIsApproved) + .WithIsLockedOut(testIsLockedOut, testLastLockoutDate) + .WithLastLoginDate(testLastLoginDate) + .WithLastPasswordChangeDate(testLastPasswordChangeDate) + .WithComments(testComments) + .WithSessionTimeout(5) + .WithStartContentIds(new[] { 3 }) + .WithStartMediaIds(new[] { 8 }) + .Build(); + + // Assert + Assert.AreEqual(testId, user.Id); + Assert.AreEqual(testKey, user.Key); + Assert.AreEqual(testName, user.Name); + Assert.AreEqual(testCreateDate, user.CreateDate); + Assert.AreEqual(testUpdateDate, user.UpdateDate); + Assert.AreEqual(testFailedPasswordAttempts, user.FailedPasswordAttempts); + Assert.AreEqual(testIsApproved, user.IsApproved); + Assert.AreEqual(testIsLockedOut, user.IsLockedOut); + Assert.AreEqual(testLastLockoutDate, user.LastLockoutDate); + Assert.AreEqual(testLastLoginDate, user.LastLoginDate); + Assert.AreEqual(testLastPasswordChangeDate, user.LastPasswordChangeDate); + Assert.AreEqual(testComments, user.Comments); + Assert.AreEqual(testSessionTimeout, user.SessionTimeout); + Assert.AreEqual(testStartContentIds, user.StartContentIds); + Assert.AreEqual(testStartMediaIds, user.StartMediaIds); + } + } +} diff --git a/src/Umbraco.Tests/Models/UserTests.cs b/src/Umbraco.Tests/Models/UserTests.cs deleted file mode 100644 index 0bd6b17cf1..0000000000 --- a/src/Umbraco.Tests/Models/UserTests.cs +++ /dev/null @@ -1,90 +0,0 @@ -using System; -using System.Diagnostics; -using System.Linq; -using Newtonsoft.Json; -using NUnit.Framework; -using Umbraco.Core.Composing; -using Umbraco.Core.Configuration; -using Umbraco.Core.Models.Membership; -using Umbraco.Core.Serialization; -using Umbraco.Tests.TestHelpers; - -namespace Umbraco.Tests.Models -{ - [TestFixture] - public class UserTests - { - private IGlobalSettings GlobalSettings { get; } = SettingsForTests.DefaultGlobalSettings; - - [Test] - public void Can_Deep_Clone() - { - var item = new User(GlobalSettings) - { - Id = 3, - Key = Guid.NewGuid(), - UpdateDate = DateTime.Now, - CreateDate = DateTime.Now, - Name = "Test", - Comments = "comments", - Email = "test@test.com", - Language = "en", - FailedPasswordAttempts = 3, - IsApproved = true, - IsLockedOut = true, - LastLockoutDate = DateTime.Now, - LastLoginDate = DateTime.Now, - LastPasswordChangeDate = DateTime.Now, - //Password = "test pass", - SessionTimeout = 5, - StartContentIds = new[] { 3 }, - StartMediaIds = new[] { 8 }, - Username = "username" - }; - - var clone = (User)item.DeepClone(); - - Assert.AreNotSame(clone, item); - Assert.AreEqual(clone, item); - - Assert.AreEqual(clone.AllowedSections.Count(), item.AllowedSections.Count()); - - //Verify normal properties with reflection - var allProps = clone.GetType().GetProperties(); - foreach (var propertyInfo in allProps) - { - Assert.AreEqual(propertyInfo.GetValue(clone, null), propertyInfo.GetValue(item, null)); - } - } - - [Test] - public void Can_Serialize_Without_Error() - { - var item = new User(GlobalSettings) - { - Id = 3, - Key = Guid.NewGuid(), - UpdateDate = DateTime.Now, - CreateDate = DateTime.Now, - Name = "Test", - Comments = "comments", - Email = "test@test.com", - Language = "en", - FailedPasswordAttempts = 3, - IsApproved = true, - IsLockedOut = true, - LastLockoutDate = DateTime.Now, - LastLoginDate = DateTime.Now, - LastPasswordChangeDate = DateTime.Now, - //Password = "test pass", - SessionTimeout = 5, - StartContentIds = new[] { 3 }, - StartMediaIds = new[] { 8 }, - Username = "username" - }; - - var json = JsonConvert.SerializeObject(item); - Debug.Print(json); - } - } -} diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 8271b32a76..26c5316e07 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -142,7 +142,6 @@ - @@ -289,7 +288,6 @@ - @@ -297,7 +295,6 @@ - @@ -325,7 +322,6 @@ -