From b3fd94e023acd1104df024a2aa284fe5ec3b9a91 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Sat, 11 Apr 2020 16:35:33 +0200 Subject: [PATCH 01/12] Migrated user tests into new project and builder pattern. --- .../Builders/Extensions/BuilderExtensions.cs | 55 ++++++ .../Builders/Interfaces/IAccountBuilder.cs | 12 ++ .../Interfaces/IWithApprovedBuilder.cs | 7 - .../Builders/Interfaces/IWithEmailBuilder.cs | 7 + .../IWithFailedPasswordAttemptsBuilder.cs | 7 + .../Interfaces/IWithIsApprovedBuilder.cs | 7 + .../Interfaces/IWithIsLockedOutBuilder.cs | 11 ++ .../Interfaces/IWithLastLoginDateBuilder.cs | 9 + .../IWithLastPasswordChangeDateBuilder.cs | 9 + .../Builders/Interfaces/IWithLoginBuilder.cs | 9 + .../Builders/MemberBuilder.cs | 123 +++++++------- .../Builders/UserBuilder.cs | 158 ++++++++++++++---- .../Models/MemberTests.cs | 6 +- .../Models/UserTests.cs | 61 +++++++ .../Builders/MemberBuilderTests.cs | 15 +- .../Builders/UserBuilderTests.cs | 74 ++++++++ src/Umbraco.Tests/Models/UserTests.cs | 90 ---------- src/Umbraco.Tests/Umbraco.Tests.csproj | 1 - 18 files changed, 464 insertions(+), 197 deletions(-) create mode 100644 src/Umbraco.Tests.Common/Builders/Interfaces/IAccountBuilder.cs delete mode 100644 src/Umbraco.Tests.Common/Builders/Interfaces/IWithApprovedBuilder.cs create mode 100644 src/Umbraco.Tests.Common/Builders/Interfaces/IWithEmailBuilder.cs create mode 100644 src/Umbraco.Tests.Common/Builders/Interfaces/IWithFailedPasswordAttemptsBuilder.cs create mode 100644 src/Umbraco.Tests.Common/Builders/Interfaces/IWithIsApprovedBuilder.cs create mode 100644 src/Umbraco.Tests.Common/Builders/Interfaces/IWithIsLockedOutBuilder.cs create mode 100644 src/Umbraco.Tests.Common/Builders/Interfaces/IWithLastLoginDateBuilder.cs create mode 100644 src/Umbraco.Tests.Common/Builders/Interfaces/IWithLastPasswordChangeDateBuilder.cs create mode 100644 src/Umbraco.Tests.Common/Builders/Interfaces/IWithLoginBuilder.cs create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserTests.cs create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/UserBuilderTests.cs delete mode 100644 src/Umbraco.Tests/Models/UserTests.cs diff --git a/src/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs b/src/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs index c105a8bded..3228181edb 100644 --- a/src/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs +++ b/src/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs @@ -116,5 +116,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/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/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/UserBuilder.cs b/src/Umbraco.Tests.Common/Builders/UserBuilder.cs index cb24e0e8dc..4fafb3e1bd 100644 --- a/src/Umbraco.Tests.Common/Builders/UserBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/UserBuilder.cs @@ -1,10 +1,9 @@ -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) @@ -15,27 +14,57 @@ namespace Umbraco.Tests.Common.Builders 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 +76,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 +113,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 +172,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.UnitTests/Umbraco.Infrastructure/Models/MemberTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MemberTests.cs index 1ac255db39..85cd84526a 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MemberTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MemberTests.cs @@ -116,14 +116,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.UnitTests/Umbraco.Infrastructure/Models/UserTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserTests.cs new file mode 100644 index 0000000000..281f8cd040 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserTests.cs @@ -0,0 +1,61 @@ +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 readonly UserBuilder _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/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..3a36f59776 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -297,7 +297,6 @@ - From 4456a784b0d4fa55e509b09259523d1194f1dcd8 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Sat, 11 Apr 2020 16:41:28 +0200 Subject: [PATCH 02/12] Migrated user extension tests new project pattern. --- .../Umbraco.Infrastructure.csproj | 5 ++++- .../Models/UserExtensionsTests.cs | 13 ++++++++----- src/Umbraco.Tests/Umbraco.Tests.csproj | 1 - 3 files changed, 12 insertions(+), 7 deletions(-) rename src/{Umbraco.Tests => Umbraco.Tests.UnitTests/Umbraco.Infrastructure}/Models/UserExtensionsTests.cs (93%) 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/Models/UserExtensionsTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserExtensionsTests.cs similarity index 93% rename from src/Umbraco.Tests/Models/UserExtensionsTests.cs rename to src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserExtensionsTests.cs index bf76031b59..979d18c5a1 100644 --- a/src/Umbraco.Tests/Models/UserExtensionsTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserExtensionsTests.cs @@ -5,14 +5,16 @@ 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 readonly UserBuilder _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 +26,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/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 3a36f59776..36550066db 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -324,7 +324,6 @@ - From 3085ce52f9c531cc0a49c00ed34b50f258203a67 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Sat, 11 Apr 2020 17:21:27 +0200 Subject: [PATCH 03/12] Migrated parth validation tests to new project and builder pattern. --- .../Builders/EntitySlimBuilder.cs | 50 ++++++++++++ .../Models/PathValidationTests.cs | 76 +++++++++---------- src/Umbraco.Tests/Umbraco.Tests.csproj | 1 - 3 files changed, 88 insertions(+), 39 deletions(-) create mode 100644 src/Umbraco.Tests.Common/Builders/EntitySlimBuilder.cs rename src/{Umbraco.Tests => Umbraco.Tests.UnitTests/Umbraco.Infrastructure}/Models/PathValidationTests.cs (71%) diff --git a/src/Umbraco.Tests.Common/Builders/EntitySlimBuilder.cs b/src/Umbraco.Tests.Common/Builders/EntitySlimBuilder.cs new file mode 100644 index 0000000000..eedef3482c --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/EntitySlimBuilder.cs @@ -0,0 +1,50 @@ +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 WithNoId() + { + _id = 0; + return this; + } + + 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/Models/PathValidationTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs similarity index 71% rename from src/Umbraco.Tests/Models/PathValidationTests.cs rename to src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs index dab362cc35..36a282aaf4 100644 --- a/src/Umbraco.Tests/Models/PathValidationTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs @@ -4,16 +4,22 @@ 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 readonly EntitySlimBuilder _builder = new EntitySlimBuilder(); + [Test] public void Validate_Path() { - var entity = new EntitySlim(); + var entity = _builder + .WithNoId() + .Build(); //it's empty with no id so we need to allow it Assert.IsTrue(entity.ValidatePath()); @@ -37,7 +43,9 @@ namespace Umbraco.Tests.Models [Test] public void Ensure_Path_Throws_Without_Id() { - var entity = new EntitySlim(); + var entity = _builder + .WithNoId() + .Build(); //no id assigned Assert.Throws(() => entity.EnsureValidPath(Mock.Of(), umbracoEntity => new EntitySlim(), umbracoEntity => { })); @@ -46,7 +54,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 +66,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 +79,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 +93,22 @@ 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 = _builder + .WithId(888) + .WithParentId(999) + .Build(); + var parentC = _builder + .WithId(777) + .WithParentId(888) + .Build(); - var parentB = new EntitySlim - { - Id = 888, - ParentId = 999 - }; - - var parentC = new EntitySlim - { - Id = 777, - ParentId = 888 - }; - - var entity = new EntitySlim - { - Id = 1234, - ParentId = 777 - }; + var entity = _builder + .WithId(1234) + .WithParentId(777) + .Build(); Func getParent = umbracoEntity => { @@ -136,4 +136,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/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 36550066db..9c2e598875 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -142,7 +142,6 @@ - From a5aa1e19a5b8a734d3e8255e1157d54787689abf Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Sat, 11 Apr 2020 18:37:10 +0200 Subject: [PATCH 04/12] Fixed failing integration tests following amends to UserBuilder. --- .../Builders/EntitySlimBuilder.cs | 6 ------ .../Builders/Extensions/BuilderExtensions.cs | 7 +++++++ .../Repositories/UserRepositoryTest.cs | 20 +++++++++---------- .../Testing/UmbracoIntegrationTest.cs | 4 ---- .../Models/PathValidationTests.cs | 4 ++-- 5 files changed, 18 insertions(+), 23 deletions(-) diff --git a/src/Umbraco.Tests.Common/Builders/EntitySlimBuilder.cs b/src/Umbraco.Tests.Common/Builders/EntitySlimBuilder.cs index eedef3482c..844c765a9d 100644 --- a/src/Umbraco.Tests.Common/Builders/EntitySlimBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/EntitySlimBuilder.cs @@ -23,12 +23,6 @@ namespace Umbraco.Tests.Common.Builders }; } - public EntitySlimBuilder WithNoId() - { - _id = 0; - return this; - } - public EntitySlimBuilder WithNoParentId() { _parentId = 0; diff --git a/src/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs b/src/Umbraco.Tests.Common/Builders/Extensions/BuilderExtensions.cs index 3228181edb..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 { diff --git a/src/Umbraco.Tests.Integration/Persistence/Repositories/UserRepositoryTest.cs b/src/Umbraco.Tests.Integration/Persistence/Repositories/UserRepositoryTest.cs index 7feb69f0c6..a590121556 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 { @@ -381,9 +379,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/PathValidationTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs index 36a282aaf4..92f728d4b8 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs @@ -18,7 +18,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models public void Validate_Path() { var entity = _builder - .WithNoId() + .WithoutIdentity() .Build(); //it's empty with no id so we need to allow it @@ -44,7 +44,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models public void Ensure_Path_Throws_Without_Id() { var entity = _builder - .WithNoId() + .WithoutIdentity() .Build(); //no id assigned From f961916245dc1ea9e58983bf8403750f7ac4811a Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Sun, 12 Apr 2020 09:47:44 +0200 Subject: [PATCH 05/12] Introduced a reset of the unit test builders to support re-use within a test. --- .../Builders/BuilderBase.cs | 2 + .../Builders/ConfigurationEditorBuilder.cs | 7 +- .../Builders/DataEditorBuilder.cs | 12 +- .../Builders/DataTypeBuilder.cs | 29 +++-- .../Builders/DataValueEditorBuilder.cs | 10 +- .../Builders/DictionaryItemBuilder.cs | 12 ++ .../Builders/DictionaryTranslationBuilder.cs | 75 +++++++------ .../Builders/EntitySlimBuilder.cs | 7 ++ .../Builders/GenericCollectionBuilder.cs | 18 ++- .../Builders/GenericDictionaryBuilder.cs | 20 +++- .../Builders/GlobalSettingsBuilder.cs | 31 ++++- .../Builders/LanguageBuilder.cs | 102 +++++++++-------- .../Builders/MemberBuilder.cs | 25 +++++ .../Builders/MemberGroupBuilder.cs | 11 ++ .../Builders/MemberTypeBuilder.cs | 16 +++ .../Builders/PropertyBuilder.cs | 9 ++ .../Builders/PropertyGroupBuilder.cs | 12 ++ .../Builders/PropertyTypeBuilder.cs | 21 ++++ .../Builders/RelationBuilder.cs | 12 ++ .../Builders/RelationTypeBuilder.cs | 97 +++++++++------- .../Builders/SmtpSettingsBuilder.cs | 106 ++++++++++-------- .../Builders/StylesheetBuilder.cs | 7 ++ .../Builders/TemplateBuilder.cs | 17 +++ .../Builders/UserBuilder.cs | 27 ++++- .../Builders/UserGroupBuilder.cs | 18 ++- .../Repositories/UserRepositoryTest.cs | 5 +- 26 files changed, 513 insertions(+), 195 deletions(-) diff --git a/src/Umbraco.Tests.Common/Builders/BuilderBase.cs b/src/Umbraco.Tests.Common/Builders/BuilderBase.cs index d8fc048d1b..723581986c 100644 --- a/src/Umbraco.Tests.Common/Builders/BuilderBase.cs +++ b/src/Umbraco.Tests.Common/Builders/BuilderBase.cs @@ -3,5 +3,7 @@ namespace Umbraco.Tests.Common.Builders public abstract class BuilderBase { public abstract T Build(); + + protected abstract void Reset(); } } diff --git a/src/Umbraco.Tests.Common/Builders/ConfigurationEditorBuilder.cs b/src/Umbraco.Tests.Common/Builders/ConfigurationEditorBuilder.cs index 3e0b9b96a9..08cb9e07f5 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; @@ -23,11 +21,16 @@ namespace Umbraco.Tests.Common.Builders { var defaultConfiguration = _defaultConfiguration ?? new Dictionary(); + Reset(); return new ConfigurationEditor() { DefaultConfiguration = defaultConfiguration, }; } + protected override void Reset() + { + _defaultConfiguration = null; + } } } diff --git a/src/Umbraco.Tests.Common/Builders/DataEditorBuilder.cs b/src/Umbraco.Tests.Common/Builders/DataEditorBuilder.cs index b3c3ff1b7e..b1e33f53df 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) @@ -37,6 +37,7 @@ namespace Umbraco.Tests.Common.Builders var explicitConfigurationEditor = _explicitConfigurationEditorBuilder.Build(); var explicitValueEditor = _explicitValueEditorBuilder.Build(); + Reset(); return new DataEditor( Mock.Of(), Mock.Of(), @@ -50,5 +51,12 @@ namespace Umbraco.Tests.Common.Builders ExplicitValueEditor = explicitValueEditor }; } + + protected override void Reset() + { + _defaultConfiguration = null; + _explicitConfigurationEditorBuilder = new ConfigurationEditorBuilder>(this); + _explicitValueEditorBuilder = new DataValueEditorBuilder>(this); + } } } diff --git a/src/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs b/src/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs index de7b8d9a97..582c7f58b5 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,13 +60,13 @@ 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; var databaseType = _databaseType ?? ValueStorageType.Ntext; var sortOrder = _sortOrder ?? 0; + Reset(); return new DataType(editor, parentId) { Id = id, @@ -91,6 +84,24 @@ namespace Umbraco.Tests.Common.Builders }; } + protected override void Reset() + { + _dataEditorBuilder = new DataEditorBuilder(this); + _id = null; + _parentId = null; + _key = null; + _createDate = null; + _updateDate = null; + _deleteDate = null; + _name = null; + _trashed = null; + _level = null; + _path = null; + _creatorId = null; + _databaseType = null; + _sortOrder = null; + } + int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/DataValueEditorBuilder.cs b/src/Umbraco.Tests.Common/Builders/DataValueEditorBuilder.cs index 3d0b518ee7..4c271d127c 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) { } @@ -49,6 +48,7 @@ namespace Umbraco.Tests.Common.Builders var hideLabel = _hideLabel ?? false; var valueType = _valueType ?? Guid.NewGuid().ToString(); + Reset(); return new DataValueEditor( Mock.Of(), Mock.Of(), @@ -62,5 +62,13 @@ namespace Umbraco.Tests.Common.Builders ValueType = valueType, }; } + + protected override void Reset() + { + _configuration = null; + _view = null; + _hideLabel = null; + _valueType = null; + } } } diff --git a/src/Umbraco.Tests.Common/Builders/DictionaryItemBuilder.cs b/src/Umbraco.Tests.Common/Builders/DictionaryItemBuilder.cs index 206bccba80..17ccbcc3fb 100644 --- a/src/Umbraco.Tests.Common/Builders/DictionaryItemBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/DictionaryItemBuilder.cs @@ -65,6 +65,7 @@ namespace Umbraco.Tests.Common.Builders var parentId = _parentId ?? null; var itemKey = _itemKey ?? Guid.NewGuid().ToString(); + Reset(); var result = new DictionaryItem(itemKey) { Translations = _translationBuilders.Select(x => x.Build()), @@ -78,6 +79,17 @@ namespace Umbraco.Tests.Common.Builders return result; } + protected override void Reset() + { + _createDate = null; + _deleteDate = null; + _id = null; + _itemKey = null; + _key = null; + _parentId = null; + _updateDate = null; + } + public DictionaryItemBuilder WithParentId(Guid parentId) { _parentId = parentId; diff --git a/src/Umbraco.Tests.Common/Builders/DictionaryTranslationBuilder.cs b/src/Umbraco.Tests.Common/Builders/DictionaryTranslationBuilder.cs index d2f9d4bf02..6104b005cf 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,48 @@ 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 + }; + + Reset(); + return result; + } + + protected override void Reset() + { + _languageBuilder = new LanguageBuilder(this); + _createDate = null; + _deleteDate = null; + _id = null; + _key = null; + _updateDate = null; + _value = null; + } + DateTime? IWithCreateDateBuilder.CreateDate { get => _createDate; @@ -55,35 +96,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 index 844c765a9d..f4649d6b49 100644 --- a/src/Umbraco.Tests.Common/Builders/EntitySlimBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/EntitySlimBuilder.cs @@ -16,6 +16,7 @@ namespace Umbraco.Tests.Common.Builders var id = _id ?? 1; var parentId = _parentId ?? -1; + Reset(); return new EntitySlim { Id = id, @@ -23,6 +24,12 @@ namespace Umbraco.Tests.Common.Builders }; } + protected override void Reset() + { + _id = null; + _parentId = null; + } + public EntitySlimBuilder WithNoParentId() { _parentId = 0; diff --git a/src/Umbraco.Tests.Common/Builders/GenericCollectionBuilder.cs b/src/Umbraco.Tests.Common/Builders/GenericCollectionBuilder.cs index c7e176e9b0..290fdfc45b 100644 --- a/src/Umbraco.Tests.Common/Builders/GenericCollectionBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/GenericCollectionBuilder.cs @@ -1,24 +1,36 @@ using System.Collections.Generic; +using System.Linq; namespace Umbraco.Tests.Common.Builders { public class GenericCollectionBuilder : ChildBuilderBase> { - private readonly IList _collection; + private IList _collection; public GenericCollectionBuilder(TBuilder parentBuilder) : base(parentBuilder) { - _collection = new List(); } public override IEnumerable Build() { - return _collection; + var collection = _collection?.ToList() ?? Enumerable.Empty(); + Reset(); + return collection; + } + + protected override void Reset() + { + _collection = null; } public GenericCollectionBuilder WithValue(T value) { + if (_collection == null) + { + _collection = new List(); + } + _collection.Add(value); return this; } diff --git a/src/Umbraco.Tests.Common/Builders/GenericDictionaryBuilder.cs b/src/Umbraco.Tests.Common/Builders/GenericDictionaryBuilder.cs index 8f6aedcf43..444bbb61d2 100644 --- a/src/Umbraco.Tests.Common/Builders/GenericDictionaryBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/GenericDictionaryBuilder.cs @@ -5,20 +5,34 @@ namespace Umbraco.Tests.Common.Builders public class GenericDictionaryBuilder : ChildBuilderBase> { - private readonly IDictionary _dictionary; + private IDictionary _dictionary; public GenericDictionaryBuilder(TBuilder parentBuilder) : base(parentBuilder) { - _dictionary = new Dictionary(); } public override IDictionary Build() { - return _dictionary; + var dictionary = _dictionary == null + ? new Dictionary() + : new Dictionary(_dictionary); + Reset(); + return dictionary; } + protected override void Reset() + { + _dictionary = null; + } + + public GenericDictionaryBuilder WithKeyValue(TKey key, TValue value) { + if (_dictionary == null) + { + _dictionary = new Dictionary(); + } + _dictionary.Add(key, value); return this; } diff --git a/src/Umbraco.Tests.Common/Builders/GlobalSettingsBuilder.cs b/src/Umbraco.Tests.Common/Builders/GlobalSettingsBuilder.cs index 56e242146c..1fe1164eba 100644 --- a/src/Umbraco.Tests.Common/Builders/GlobalSettingsBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/GlobalSettingsBuilder.cs @@ -32,8 +32,7 @@ namespace Umbraco.Tests.Common.Builders private string _noNodesViewPath; private bool? _useHttps; private int? _versionCheckPeriod; - private readonly SmtpSettingsBuilder> _smtpSettingsBuilder; - + private SmtpSettingsBuilder> _smtpSettingsBuilder; public GlobalSettingsBuilder(TParent parentBuilder) : base(parentBuilder) { @@ -192,7 +191,7 @@ namespace Umbraco.Tests.Common.Builders var mainDomLock = _mainDomLock ?? string.Empty; var noNodesViewPath = _noNodesViewPath ?? "~/config/splashes/NoNodes.cshtml"; - + Reset(); return new TestGlobalSettings { ConfigurationStatus = configurationStatus, @@ -220,6 +219,32 @@ namespace Umbraco.Tests.Common.Builders }; } + protected override void Reset() + { + _configurationStatus = null; + _databaseFactoryServerVersion = null; + _defaultUiLanguage = null; + _disableElectionForSingleServer = null; + _hideTopLevelNodeFromPath = null; + _installEmptyDatabase = null; + _installMissingDatabase = null; + _isSmtpServerConfigured = null; + _path = null; + _registerType = null; + _reservedPaths = null; + _reservedUrls = null; + _timeOutInMinutes = null; + _umbracoCssPath = null; + _umbracoMediaPath = null; + _umbracoPath = null; + _umbracoScriptsPath = null; + _mainDomLock = null; + _noNodesViewPath = null; + _useHttps = null; + _versionCheckPeriod = null; + _smtpSettingsBuilder = new SmtpSettingsBuilder>(this); + } + private class TestGlobalSettings : IGlobalSettings { public string ReservedUrls { get; set; } diff --git a/src/Umbraco.Tests.Common/Builders/LanguageBuilder.cs b/src/Umbraco.Tests.Common/Builders/LanguageBuilder.cs index ae60920c9c..186b961526 100644 --- a/src/Umbraco.Tests.Common/Builders/LanguageBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/LanguageBuilder.cs @@ -37,6 +37,64 @@ 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; + + Reset(); + 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 + }; + } + + protected override void Reset() + { + _createDate = null; + _cultureInfo = null; + _deleteDate = null; + _fallbackLanguageId = null; + _id = null; + _isDefault = null; + _isMandatory = null; + _key = null; + _updateDate = null; + } + DateTime? IWithCreateDateBuilder.CreateDate { get => _createDate; @@ -72,49 +130,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/MemberBuilder.cs b/src/Umbraco.Tests.Common/Builders/MemberBuilder.cs index 16ec7ed005..f32035c5c9 100644 --- a/src/Umbraco.Tests.Common/Builders/MemberBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/MemberBuilder.cs @@ -161,9 +161,34 @@ namespace Umbraco.Tests.Common.Builders member.ResetDirtyProperties(false); } + Reset(); return member; } + protected override void Reset() + { + _id = null; + _key = null; + _createDate = null; + _updateDate = null; + _name = null; + _creatorId = null; + _level = null; + _path = null; + _username = null; + _rawPasswordValue = null; + _email = null; + _failedPasswordAttempts = null; + _isApproved = null; + _isLockedOut = null; + _lastLockoutDate = null; + _lastLoginDate = null; + _lastPasswordChangeDate = null; + _sortOrder = null; + _trashed = null; + _propertyIdsIncrementingFrom = null; + } + int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/MemberGroupBuilder.cs b/src/Umbraco.Tests.Common/Builders/MemberGroupBuilder.cs index bfd7f30a14..127a071083 100644 --- a/src/Umbraco.Tests.Common/Builders/MemberGroupBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/MemberGroupBuilder.cs @@ -57,9 +57,20 @@ namespace Umbraco.Tests.Common.Builders } } + Reset(); return memberGroup; } + protected override void Reset() + { + _id = null; + _key = null; + _createDate = null; + _updateDate = null; + _name = null; + _creatorId = null; + } + int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/MemberTypeBuilder.cs b/src/Umbraco.Tests.Common/Builders/MemberTypeBuilder.cs index d5a145331e..c132163c21 100644 --- a/src/Umbraco.Tests.Common/Builders/MemberTypeBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/MemberTypeBuilder.cs @@ -134,9 +134,25 @@ namespace Umbraco.Tests.Common.Builders memberType.ResetDirtyProperties(false); + Reset(); return memberType; } + protected override void Reset() + { + _id = null; + _alias = null; + _name = null; + _parentId = null; + _sortOrder = null; + _creatorId = null; + _description = null; + _icon = null; + _thumbnail = null; + _trashed = null; + _propertyGroupBuilders.Clear(); + } + int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/PropertyBuilder.cs b/src/Umbraco.Tests.Common/Builders/PropertyBuilder.cs index 6cb7a431f2..6396b604e9 100644 --- a/src/Umbraco.Tests.Common/Builders/PropertyBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/PropertyBuilder.cs @@ -36,6 +36,7 @@ namespace Umbraco.Tests.Common.Builders // Needs to be within collection to support publishing. var propertyTypeCollection = new PropertyTypeCollection(true, new[] { _propertyTypeBuilder.Build() }); + Reset(); return new Property(id, propertyTypeCollection[0]) { Key = key, @@ -44,6 +45,14 @@ namespace Umbraco.Tests.Common.Builders }; } + protected override void Reset() + { + _id = null; + _key = null; + _createDate = null; + _updateDate = null; + } + int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/PropertyGroupBuilder.cs b/src/Umbraco.Tests.Common/Builders/PropertyGroupBuilder.cs index 5df61dd072..25ec8bf21a 100644 --- a/src/Umbraco.Tests.Common/Builders/PropertyGroupBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/PropertyGroupBuilder.cs @@ -62,6 +62,7 @@ namespace Umbraco.Tests.Common.Builders properties.Add(propertyType); } + Reset(); return new PropertyGroup(properties) { Id = id, @@ -73,6 +74,17 @@ namespace Umbraco.Tests.Common.Builders }; } + protected override void Reset() + { + _id = null; + _key = null; + _createDate = null; + _updateDate = null; + _name = null; + _sortOrder = null; + _propertyTypeBuilders.Clear(); + } + int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/PropertyTypeBuilder.cs b/src/Umbraco.Tests.Common/Builders/PropertyTypeBuilder.cs index 9dc61014b5..3c499fb855 100644 --- a/src/Umbraco.Tests.Common/Builders/PropertyTypeBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/PropertyTypeBuilder.cs @@ -108,6 +108,7 @@ namespace Umbraco.Tests.Common.Builders var shortStringHelper = new DefaultShortStringHelper(new DefaultShortStringHelperConfig()); + Reset(); return new PropertyType(shortStringHelper, propertyEditorAlias, valueStorageType) { Id = id, @@ -126,6 +127,26 @@ namespace Umbraco.Tests.Common.Builders ValidationRegExpMessage = validationRegExpMessage, }; } + + protected override void Reset() + { + _id = null; + _key = null; + _propertyEditorAlias = null; + _valueStorageType = null; + _alias = null; + _name = null; + _createDate = null; + _updateDate = null; + _sortOrder = null; + _description = null; + _dataTypeId = null; + _propertyGroupId = null; + _mandatory = null; + _mandatoryMessage = null; + _validationRegExp = null; + _validationRegExpMessage = null; + } int? IWithIdBuilder.Id { diff --git a/src/Umbraco.Tests.Common/Builders/RelationBuilder.cs b/src/Umbraco.Tests.Common/Builders/RelationBuilder.cs index 2cea234200..bf805aba77 100644 --- a/src/Umbraco.Tests.Common/Builders/RelationBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/RelationBuilder.cs @@ -58,6 +58,7 @@ namespace Umbraco.Tests.Common.Builders var relationType = _relationTypeBuilder.Build(); + Reset(); return new Relation(parentId, childId, relationType) { Comment = comment, @@ -68,6 +69,17 @@ namespace Umbraco.Tests.Common.Builders }; } + protected override void Reset() + { + _id = null; + _parentId = null; + _childId = null; + _key = null; + _createDate = null; + _updateDate = null; + _comment = null; + } + 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..dd25ae864a 100644 --- a/src/Umbraco.Tests.Common/Builders/RelationTypeBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/RelationTypeBuilder.cs @@ -33,6 +33,62 @@ 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; + + Reset(); + return new RelationType(name, alias, isBidirectional, parentObjectType, childObjectType) + { + Id = id, + Key = key, + CreateDate = createDate, + UpdateDate = updateDate, + DeleteDate = deleteDate + }; + } + + protected override void Reset() + { + _alias = null; + _childObjectType = null; + _createDate = null; + _deleteDate = null; + _id = null; + _isBidirectional = null; + _key = null; + _name = null; + _parentObjectType = null; + _updateDate = null; + } + string IWithAliasBuilder.Alias { get => _alias; @@ -74,46 +130,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..586aedec9e 100644 --- a/src/Umbraco.Tests.Common/Builders/SmtpSettingsBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/SmtpSettingsBuilder.cs @@ -9,65 +9,73 @@ 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() - { + Reset(); + 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; } - } - } + protected override void Reset() + { + _from = null; + _host = null; + _port = null; + _pickupDirectoryLocation = null; + } + + 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/StylesheetBuilder.cs b/src/Umbraco.Tests.Common/Builders/StylesheetBuilder.cs index ed871b9c31..c3eb097e65 100644 --- a/src/Umbraco.Tests.Common/Builders/StylesheetBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/StylesheetBuilder.cs @@ -25,10 +25,17 @@ namespace Umbraco.Tests.Common.Builders var path = _path ?? string.Empty; var content = _content ?? string.Empty; + Reset(); return new Stylesheet(path) { Content = content, }; } + + protected override void Reset() + { + _path = null; + _content = null; + } } } diff --git a/src/Umbraco.Tests.Common/Builders/TemplateBuilder.cs b/src/Umbraco.Tests.Common/Builders/TemplateBuilder.cs index 7f7fa0f098..6a29b89e6a 100644 --- a/src/Umbraco.Tests.Common/Builders/TemplateBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/TemplateBuilder.cs @@ -57,6 +57,8 @@ namespace Umbraco.Tests.Common.Builders var masterTemplateId = _masterTemplateId ?? null; var shortStringHelper = new DefaultShortStringHelper(new DefaultShortStringHelperConfig()); + + Reset(); return new Template(shortStringHelper, name, alias) { Id = id, @@ -71,6 +73,21 @@ namespace Umbraco.Tests.Common.Builders }; } + protected override void Reset() + { + _id = null; + _key = null; + _alias = null; + _name = null; + _createDate = null; + _updateDate = null; + _path = null; + _content = null; + _isMasterTemplate = null; + _masterTemplateAlias = null; + _masterTemplateId = null; + } + int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/UserBuilder.cs b/src/Umbraco.Tests.Common/Builders/UserBuilder.cs index 4fafb3e1bd..4d69280ec5 100644 --- a/src/Umbraco.Tests.Common/Builders/UserBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/UserBuilder.cs @@ -10,7 +10,6 @@ namespace Umbraco.Tests.Common.Builders { } } - public class UserBuilder : ChildBuilderBase, IWithIdBuilder, @@ -135,6 +134,7 @@ namespace Umbraco.Tests.Common.Builders var startContentIds = _startContentIds ?? new int[0]; var startMediaIds = _startMediaIds ?? new int[0]; + Reset(); return new User( globalSettings, name, @@ -160,6 +160,31 @@ namespace Umbraco.Tests.Common.Builders }; } + protected override void Reset() + { + _id = null; + _key = null; + _createDate = null; + _updateDate = null; + _language = null; + _name = null; + _username = null; + _rawPasswordValue = null; + _email = null; + _failedPasswordAttempts = null; + _isApproved = null; + _isLockedOut = null; + _lastLockoutDate = null; + _lastLoginDate = null; + _lastPasswordChangeDate = null; + _suffix = string.Empty; + _defaultLang = null; + _comments = null; + _sessionTimeout = null; + _startContentIds = null; + _startMediaIds = null; + } + int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs b/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs index 4c6bb7a74c..8b0568d2d4 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,6 +68,21 @@ namespace Umbraco.Tests.Common.Builders x.Icon == _icon && x.Permissions == _permissions && x.AllowedSections == _sectionCollection); + Reset(); + return userGroup; + } + + protected override void Reset() + { + _startContentId = null; + _startMediaId = null; + _alias = null; + _icon = null; + _name = null; + _permissions = Enumerable.Empty(); + _sectionCollection = Enumerable.Empty(); + _suffix = null; + _id = null; } int? IWithIdBuilder.Id diff --git a/src/Umbraco.Tests.Integration/Persistence/Repositories/UserRepositoryTest.cs b/src/Umbraco.Tests.Integration/Persistence/Repositories/UserRepositoryTest.cs index a590121556..23c9e398d3 100644 --- a/src/Umbraco.Tests.Integration/Persistence/Repositories/UserRepositoryTest.cs +++ b/src/Umbraco.Tests.Integration/Persistence/Repositories/UserRepositoryTest.cs @@ -87,7 +87,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var repository = CreateRepository(provider); - var user = UserBuilder.Build(); + var user = UserBuilder.WithoutIdentity().Build(); repository.Save(user); @@ -365,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 }); From a9a8cb7f6f4fd8a77afc9c6f2afc5f23fed4dedf Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Mon, 13 Apr 2020 19:22:31 +0200 Subject: [PATCH 06/12] Migrated macro unit tests to new project and builder pattern. --- .../Builders/MacroBuilder.cs | 141 ++++++++++++++++++ .../Builders/MacroPropertyBuilder.cs | 88 +++++++++++ .../Models/MacroTests.cs | 32 ++-- .../Builders/MacroBuilderTests.cs | 73 +++++++++ src/Umbraco.Tests/Umbraco.Tests.csproj | 1 - 5 files changed, 325 insertions(+), 10 deletions(-) create mode 100644 src/Umbraco.Tests.Common/Builders/MacroBuilder.cs create mode 100644 src/Umbraco.Tests.Common/Builders/MacroPropertyBuilder.cs rename src/{Umbraco.Tests => Umbraco.Tests.UnitTests/Umbraco.Infrastructure}/Models/MacroTests.cs (65%) create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/MacroBuilderTests.cs diff --git a/src/Umbraco.Tests.Common/Builders/MacroBuilder.cs b/src/Umbraco.Tests.Common/Builders/MacroBuilder.cs new file mode 100644 index 0000000000..953f7c9a03 --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/MacroBuilder.cs @@ -0,0 +1,141 @@ +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); + } + + Reset(); + return macro; + } + + protected override void Reset() + { + _id = null; + _key = null; + _alias = null; + _name = null; + _useInEditor = null; + _cacheDuration = null; + _cacheByPage = null; + _cacheByMember = null; + _dontRender = null; + _macroSource = null; + _propertyBuilders = new List(); + } + + 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..3c98fef93a --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/MacroPropertyBuilder.cs @@ -0,0 +1,88 @@ +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; + + var macroProperty = new MacroProperty(6, Guid.NewGuid(), alias, name, sortOrder, editorAlias); + + Reset(); + return macroProperty; + } + + protected override void Reset() + { + _id = null; + _key = null; + _alias = null; + _name = null; + _sortOrder = null; + _editorAlias = null; + } + + 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/Models/MacroTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MacroTests.cs similarity index 65% rename from src/Umbraco.Tests/Models/MacroTests.cs rename to src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MacroTests.cs index 9ebe57a847..468b77c202 100644 --- a/src/Umbraco.Tests/Models/MacroTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MacroTests.cs @@ -3,18 +3,36 @@ 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 readonly MacroBuilder _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 +42,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 +55,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 +67,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.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/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 9c2e598875..26c5316e07 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -288,7 +288,6 @@ - From 597489fba2b3b17c1be23fac14ba69ccced264a7 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Mon, 13 Apr 2020 19:33:39 +0200 Subject: [PATCH 07/12] Added missing builder property values when building macro properties. --- src/Umbraco.Tests.Common/Builders/MacroPropertyBuilder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Tests.Common/Builders/MacroPropertyBuilder.cs b/src/Umbraco.Tests.Common/Builders/MacroPropertyBuilder.cs index 3c98fef93a..5730bb7271 100644 --- a/src/Umbraco.Tests.Common/Builders/MacroPropertyBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/MacroPropertyBuilder.cs @@ -39,7 +39,7 @@ namespace Umbraco.Tests.Common.Builders var sortOrder = _sortOrder ?? 0; var editorAlias = _editorAlias ?? string.Empty; - var macroProperty = new MacroProperty(6, Guid.NewGuid(), alias, name, sortOrder, editorAlias); + var macroProperty = new MacroProperty(id, key, alias, name, sortOrder, editorAlias); Reset(); return macroProperty; From 068100cc8e3348857c5a2a0c4ff2b19a36cfd619 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Thu, 16 Apr 2020 11:39:30 +0200 Subject: [PATCH 08/12] Removed resetting of unit test builders. --- .../Builders/BuilderBase.cs | 2 -- .../Builders/ConfigurationEditorBuilder.cs | 6 ---- .../Builders/DataEditorBuilder.cs | 8 ----- .../Builders/DataTypeBuilder.cs | 19 ------------ .../Builders/DataValueEditorBuilder.cs | 9 ------ .../Builders/DictionaryItemBuilder.cs | 12 -------- .../Builders/DictionaryTranslationBuilder.cs | 12 -------- .../Builders/EntitySlimBuilder.cs | 7 ----- .../Builders/GenericCollectionBuilder.cs | 14 ++------- .../Builders/GenericDictionaryBuilder.cs | 18 ++---------- .../Builders/GlobalSettingsBuilder.cs | 29 +------------------ .../Builders/LanguageBuilder.cs | 14 --------- .../Builders/MacroBuilder.cs | 16 ---------- .../Builders/MacroPropertyBuilder.cs | 15 +--------- .../Builders/MemberBuilder.cs | 25 ---------------- .../Builders/MemberGroupBuilder.cs | 11 ------- .../Builders/MemberTypeBuilder.cs | 16 ---------- .../Builders/PropertyBuilder.cs | 9 ------ .../Builders/PropertyGroupBuilder.cs | 12 -------- .../Builders/PropertyTypeBuilder.cs | 21 -------------- .../Builders/RelationBuilder.cs | 12 -------- .../Builders/RelationTypeBuilder.cs | 15 ---------- .../Builders/SmtpSettingsBuilder.cs | 9 ------ .../Builders/StylesheetBuilder.cs | 7 ----- .../Builders/TemplateBuilder.cs | 16 ---------- .../Builders/UserBuilder.cs | 26 ----------------- .../Builders/UserGroupBuilder.cs | 16 +--------- .../Models/PathValidationTests.cs | 9 +++++- 28 files changed, 16 insertions(+), 369 deletions(-) diff --git a/src/Umbraco.Tests.Common/Builders/BuilderBase.cs b/src/Umbraco.Tests.Common/Builders/BuilderBase.cs index 723581986c..d8fc048d1b 100644 --- a/src/Umbraco.Tests.Common/Builders/BuilderBase.cs +++ b/src/Umbraco.Tests.Common/Builders/BuilderBase.cs @@ -3,7 +3,5 @@ namespace Umbraco.Tests.Common.Builders public abstract class BuilderBase { public abstract T Build(); - - protected abstract void Reset(); } } diff --git a/src/Umbraco.Tests.Common/Builders/ConfigurationEditorBuilder.cs b/src/Umbraco.Tests.Common/Builders/ConfigurationEditorBuilder.cs index 08cb9e07f5..f0761a983e 100644 --- a/src/Umbraco.Tests.Common/Builders/ConfigurationEditorBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/ConfigurationEditorBuilder.cs @@ -21,16 +21,10 @@ namespace Umbraco.Tests.Common.Builders { var defaultConfiguration = _defaultConfiguration ?? new Dictionary(); - Reset(); return new ConfigurationEditor() { DefaultConfiguration = defaultConfiguration, }; } - - protected override void Reset() - { - _defaultConfiguration = null; - } } } diff --git a/src/Umbraco.Tests.Common/Builders/DataEditorBuilder.cs b/src/Umbraco.Tests.Common/Builders/DataEditorBuilder.cs index b1e33f53df..5e6b174f56 100644 --- a/src/Umbraco.Tests.Common/Builders/DataEditorBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/DataEditorBuilder.cs @@ -37,7 +37,6 @@ namespace Umbraco.Tests.Common.Builders var explicitConfigurationEditor = _explicitConfigurationEditorBuilder.Build(); var explicitValueEditor = _explicitValueEditorBuilder.Build(); - Reset(); return new DataEditor( Mock.Of(), Mock.Of(), @@ -51,12 +50,5 @@ namespace Umbraco.Tests.Common.Builders ExplicitValueEditor = explicitValueEditor }; } - - protected override void Reset() - { - _defaultConfiguration = null; - _explicitConfigurationEditorBuilder = new ConfigurationEditorBuilder>(this); - _explicitValueEditorBuilder = new DataValueEditorBuilder>(this); - } } } diff --git a/src/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs b/src/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs index 582c7f58b5..cdf4a68d09 100644 --- a/src/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/DataTypeBuilder.cs @@ -66,7 +66,6 @@ namespace Umbraco.Tests.Common.Builders var databaseType = _databaseType ?? ValueStorageType.Ntext; var sortOrder = _sortOrder ?? 0; - Reset(); return new DataType(editor, parentId) { Id = id, @@ -84,24 +83,6 @@ namespace Umbraco.Tests.Common.Builders }; } - protected override void Reset() - { - _dataEditorBuilder = new DataEditorBuilder(this); - _id = null; - _parentId = null; - _key = null; - _createDate = null; - _updateDate = null; - _deleteDate = null; - _name = null; - _trashed = null; - _level = null; - _path = null; - _creatorId = null; - _databaseType = null; - _sortOrder = null; - } - int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/DataValueEditorBuilder.cs b/src/Umbraco.Tests.Common/Builders/DataValueEditorBuilder.cs index 4c271d127c..ecc2649c02 100644 --- a/src/Umbraco.Tests.Common/Builders/DataValueEditorBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/DataValueEditorBuilder.cs @@ -48,7 +48,6 @@ namespace Umbraco.Tests.Common.Builders var hideLabel = _hideLabel ?? false; var valueType = _valueType ?? Guid.NewGuid().ToString(); - Reset(); return new DataValueEditor( Mock.Of(), Mock.Of(), @@ -62,13 +61,5 @@ namespace Umbraco.Tests.Common.Builders ValueType = valueType, }; } - - protected override void Reset() - { - _configuration = null; - _view = null; - _hideLabel = null; - _valueType = null; - } } } diff --git a/src/Umbraco.Tests.Common/Builders/DictionaryItemBuilder.cs b/src/Umbraco.Tests.Common/Builders/DictionaryItemBuilder.cs index 17ccbcc3fb..206bccba80 100644 --- a/src/Umbraco.Tests.Common/Builders/DictionaryItemBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/DictionaryItemBuilder.cs @@ -65,7 +65,6 @@ namespace Umbraco.Tests.Common.Builders var parentId = _parentId ?? null; var itemKey = _itemKey ?? Guid.NewGuid().ToString(); - Reset(); var result = new DictionaryItem(itemKey) { Translations = _translationBuilders.Select(x => x.Build()), @@ -79,17 +78,6 @@ namespace Umbraco.Tests.Common.Builders return result; } - protected override void Reset() - { - _createDate = null; - _deleteDate = null; - _id = null; - _itemKey = null; - _key = null; - _parentId = null; - _updateDate = null; - } - public DictionaryItemBuilder WithParentId(Guid parentId) { _parentId = parentId; diff --git a/src/Umbraco.Tests.Common/Builders/DictionaryTranslationBuilder.cs b/src/Umbraco.Tests.Common/Builders/DictionaryTranslationBuilder.cs index 6104b005cf..6742bf0d97 100644 --- a/src/Umbraco.Tests.Common/Builders/DictionaryTranslationBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/DictionaryTranslationBuilder.cs @@ -52,20 +52,8 @@ namespace Umbraco.Tests.Common.Builders Id = id }; - Reset(); return result; } - - protected override void Reset() - { - _languageBuilder = new LanguageBuilder(this); - _createDate = null; - _deleteDate = null; - _id = null; - _key = null; - _updateDate = null; - _value = null; - } DateTime? IWithCreateDateBuilder.CreateDate { diff --git a/src/Umbraco.Tests.Common/Builders/EntitySlimBuilder.cs b/src/Umbraco.Tests.Common/Builders/EntitySlimBuilder.cs index f4649d6b49..844c765a9d 100644 --- a/src/Umbraco.Tests.Common/Builders/EntitySlimBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/EntitySlimBuilder.cs @@ -16,7 +16,6 @@ namespace Umbraco.Tests.Common.Builders var id = _id ?? 1; var parentId = _parentId ?? -1; - Reset(); return new EntitySlim { Id = id, @@ -24,12 +23,6 @@ namespace Umbraco.Tests.Common.Builders }; } - protected override void Reset() - { - _id = null; - _parentId = null; - } - public EntitySlimBuilder WithNoParentId() { _parentId = 0; diff --git a/src/Umbraco.Tests.Common/Builders/GenericCollectionBuilder.cs b/src/Umbraco.Tests.Common/Builders/GenericCollectionBuilder.cs index 290fdfc45b..0c45f6a599 100644 --- a/src/Umbraco.Tests.Common/Builders/GenericCollectionBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/GenericCollectionBuilder.cs @@ -6,31 +6,21 @@ namespace Umbraco.Tests.Common.Builders public class GenericCollectionBuilder : ChildBuilderBase> { - private IList _collection; + private readonly IList _collection; public GenericCollectionBuilder(TBuilder parentBuilder) : base(parentBuilder) { + _collection = new List(); } public override IEnumerable Build() { var collection = _collection?.ToList() ?? Enumerable.Empty(); - Reset(); return collection; } - protected override void Reset() - { - _collection = null; - } - public GenericCollectionBuilder WithValue(T value) { - if (_collection == null) - { - _collection = new List(); - } - _collection.Add(value); return this; } diff --git a/src/Umbraco.Tests.Common/Builders/GenericDictionaryBuilder.cs b/src/Umbraco.Tests.Common/Builders/GenericDictionaryBuilder.cs index 444bbb61d2..f4cb7c6a30 100644 --- a/src/Umbraco.Tests.Common/Builders/GenericDictionaryBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/GenericDictionaryBuilder.cs @@ -5,34 +5,22 @@ namespace Umbraco.Tests.Common.Builders public class GenericDictionaryBuilder : ChildBuilderBase> { - private IDictionary _dictionary; + private readonly IDictionary _dictionary; public GenericDictionaryBuilder(TBuilder parentBuilder) : base(parentBuilder) { + _dictionary = new Dictionary(); } public override IDictionary Build() { - var dictionary = _dictionary == null + return _dictionary == null ? new Dictionary() : new Dictionary(_dictionary); - Reset(); - return dictionary; } - protected override void Reset() - { - _dictionary = null; - } - - public GenericDictionaryBuilder WithKeyValue(TKey key, TValue value) { - if (_dictionary == null) - { - _dictionary = new Dictionary(); - } - _dictionary.Add(key, value); return this; } diff --git a/src/Umbraco.Tests.Common/Builders/GlobalSettingsBuilder.cs b/src/Umbraco.Tests.Common/Builders/GlobalSettingsBuilder.cs index 1fe1164eba..4a88d4a571 100644 --- a/src/Umbraco.Tests.Common/Builders/GlobalSettingsBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/GlobalSettingsBuilder.cs @@ -32,7 +32,7 @@ namespace Umbraco.Tests.Common.Builders private string _noNodesViewPath; private bool? _useHttps; private int? _versionCheckPeriod; - private SmtpSettingsBuilder> _smtpSettingsBuilder; + private readonly SmtpSettingsBuilder> _smtpSettingsBuilder; public GlobalSettingsBuilder(TParent parentBuilder) : base(parentBuilder) { @@ -191,7 +191,6 @@ namespace Umbraco.Tests.Common.Builders var mainDomLock = _mainDomLock ?? string.Empty; var noNodesViewPath = _noNodesViewPath ?? "~/config/splashes/NoNodes.cshtml"; - Reset(); return new TestGlobalSettings { ConfigurationStatus = configurationStatus, @@ -219,32 +218,6 @@ namespace Umbraco.Tests.Common.Builders }; } - protected override void Reset() - { - _configurationStatus = null; - _databaseFactoryServerVersion = null; - _defaultUiLanguage = null; - _disableElectionForSingleServer = null; - _hideTopLevelNodeFromPath = null; - _installEmptyDatabase = null; - _installMissingDatabase = null; - _isSmtpServerConfigured = null; - _path = null; - _registerType = null; - _reservedPaths = null; - _reservedUrls = null; - _timeOutInMinutes = null; - _umbracoCssPath = null; - _umbracoMediaPath = null; - _umbracoPath = null; - _umbracoScriptsPath = null; - _mainDomLock = null; - _noNodesViewPath = null; - _useHttps = null; - _versionCheckPeriod = null; - _smtpSettingsBuilder = new SmtpSettingsBuilder>(this); - } - private class TestGlobalSettings : IGlobalSettings { public string ReservedUrls { get; set; } diff --git a/src/Umbraco.Tests.Common/Builders/LanguageBuilder.cs b/src/Umbraco.Tests.Common/Builders/LanguageBuilder.cs index 186b961526..953a64c5ed 100644 --- a/src/Umbraco.Tests.Common/Builders/LanguageBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/LanguageBuilder.cs @@ -66,7 +66,6 @@ namespace Umbraco.Tests.Common.Builders var isDefault = _isDefault ?? false; var isMandatory = _isMandatory ?? false; - Reset(); return new Language(Mock.Of(), cultureInfo.Name) { Id = _id ?? 1, @@ -82,19 +81,6 @@ namespace Umbraco.Tests.Common.Builders }; } - protected override void Reset() - { - _createDate = null; - _cultureInfo = null; - _deleteDate = null; - _fallbackLanguageId = null; - _id = null; - _isDefault = null; - _isMandatory = null; - _key = null; - _updateDate = null; - } - DateTime? IWithCreateDateBuilder.CreateDate { get => _createDate; diff --git a/src/Umbraco.Tests.Common/Builders/MacroBuilder.cs b/src/Umbraco.Tests.Common/Builders/MacroBuilder.cs index 953f7c9a03..66e81ef8ce 100644 --- a/src/Umbraco.Tests.Common/Builders/MacroBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/MacroBuilder.cs @@ -95,25 +95,9 @@ namespace Umbraco.Tests.Common.Builders macro.Properties.Add(property); } - Reset(); return macro; } - protected override void Reset() - { - _id = null; - _key = null; - _alias = null; - _name = null; - _useInEditor = null; - _cacheDuration = null; - _cacheByPage = null; - _cacheByMember = null; - _dontRender = null; - _macroSource = null; - _propertyBuilders = new List(); - } - int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/MacroPropertyBuilder.cs b/src/Umbraco.Tests.Common/Builders/MacroPropertyBuilder.cs index 5730bb7271..ce80a056e9 100644 --- a/src/Umbraco.Tests.Common/Builders/MacroPropertyBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/MacroPropertyBuilder.cs @@ -39,22 +39,9 @@ namespace Umbraco.Tests.Common.Builders var sortOrder = _sortOrder ?? 0; var editorAlias = _editorAlias ?? string.Empty; - var macroProperty = new MacroProperty(id, key, alias, name, sortOrder, editorAlias); - - Reset(); - return macroProperty; + return new MacroProperty(id, key, alias, name, sortOrder, editorAlias); } - protected override void Reset() - { - _id = null; - _key = null; - _alias = null; - _name = null; - _sortOrder = null; - _editorAlias = null; - } - int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/MemberBuilder.cs b/src/Umbraco.Tests.Common/Builders/MemberBuilder.cs index f32035c5c9..16ec7ed005 100644 --- a/src/Umbraco.Tests.Common/Builders/MemberBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/MemberBuilder.cs @@ -161,34 +161,9 @@ namespace Umbraco.Tests.Common.Builders member.ResetDirtyProperties(false); } - Reset(); return member; } - protected override void Reset() - { - _id = null; - _key = null; - _createDate = null; - _updateDate = null; - _name = null; - _creatorId = null; - _level = null; - _path = null; - _username = null; - _rawPasswordValue = null; - _email = null; - _failedPasswordAttempts = null; - _isApproved = null; - _isLockedOut = null; - _lastLockoutDate = null; - _lastLoginDate = null; - _lastPasswordChangeDate = null; - _sortOrder = null; - _trashed = null; - _propertyIdsIncrementingFrom = null; - } - int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/MemberGroupBuilder.cs b/src/Umbraco.Tests.Common/Builders/MemberGroupBuilder.cs index 127a071083..bfd7f30a14 100644 --- a/src/Umbraco.Tests.Common/Builders/MemberGroupBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/MemberGroupBuilder.cs @@ -57,20 +57,9 @@ namespace Umbraco.Tests.Common.Builders } } - Reset(); return memberGroup; } - protected override void Reset() - { - _id = null; - _key = null; - _createDate = null; - _updateDate = null; - _name = null; - _creatorId = null; - } - int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/MemberTypeBuilder.cs b/src/Umbraco.Tests.Common/Builders/MemberTypeBuilder.cs index c132163c21..d5a145331e 100644 --- a/src/Umbraco.Tests.Common/Builders/MemberTypeBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/MemberTypeBuilder.cs @@ -134,25 +134,9 @@ namespace Umbraco.Tests.Common.Builders memberType.ResetDirtyProperties(false); - Reset(); return memberType; } - protected override void Reset() - { - _id = null; - _alias = null; - _name = null; - _parentId = null; - _sortOrder = null; - _creatorId = null; - _description = null; - _icon = null; - _thumbnail = null; - _trashed = null; - _propertyGroupBuilders.Clear(); - } - int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/PropertyBuilder.cs b/src/Umbraco.Tests.Common/Builders/PropertyBuilder.cs index 6396b604e9..6cb7a431f2 100644 --- a/src/Umbraco.Tests.Common/Builders/PropertyBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/PropertyBuilder.cs @@ -36,7 +36,6 @@ namespace Umbraco.Tests.Common.Builders // Needs to be within collection to support publishing. var propertyTypeCollection = new PropertyTypeCollection(true, new[] { _propertyTypeBuilder.Build() }); - Reset(); return new Property(id, propertyTypeCollection[0]) { Key = key, @@ -45,14 +44,6 @@ namespace Umbraco.Tests.Common.Builders }; } - protected override void Reset() - { - _id = null; - _key = null; - _createDate = null; - _updateDate = null; - } - int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/PropertyGroupBuilder.cs b/src/Umbraco.Tests.Common/Builders/PropertyGroupBuilder.cs index 25ec8bf21a..5df61dd072 100644 --- a/src/Umbraco.Tests.Common/Builders/PropertyGroupBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/PropertyGroupBuilder.cs @@ -62,7 +62,6 @@ namespace Umbraco.Tests.Common.Builders properties.Add(propertyType); } - Reset(); return new PropertyGroup(properties) { Id = id, @@ -74,17 +73,6 @@ namespace Umbraco.Tests.Common.Builders }; } - protected override void Reset() - { - _id = null; - _key = null; - _createDate = null; - _updateDate = null; - _name = null; - _sortOrder = null; - _propertyTypeBuilders.Clear(); - } - int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/PropertyTypeBuilder.cs b/src/Umbraco.Tests.Common/Builders/PropertyTypeBuilder.cs index 3c499fb855..9a16eb50e0 100644 --- a/src/Umbraco.Tests.Common/Builders/PropertyTypeBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/PropertyTypeBuilder.cs @@ -108,7 +108,6 @@ namespace Umbraco.Tests.Common.Builders var shortStringHelper = new DefaultShortStringHelper(new DefaultShortStringHelperConfig()); - Reset(); return new PropertyType(shortStringHelper, propertyEditorAlias, valueStorageType) { Id = id, @@ -128,26 +127,6 @@ namespace Umbraco.Tests.Common.Builders }; } - protected override void Reset() - { - _id = null; - _key = null; - _propertyEditorAlias = null; - _valueStorageType = null; - _alias = null; - _name = null; - _createDate = null; - _updateDate = null; - _sortOrder = null; - _description = null; - _dataTypeId = null; - _propertyGroupId = null; - _mandatory = null; - _mandatoryMessage = null; - _validationRegExp = null; - _validationRegExpMessage = null; - } - int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/RelationBuilder.cs b/src/Umbraco.Tests.Common/Builders/RelationBuilder.cs index bf805aba77..2cea234200 100644 --- a/src/Umbraco.Tests.Common/Builders/RelationBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/RelationBuilder.cs @@ -58,7 +58,6 @@ namespace Umbraco.Tests.Common.Builders var relationType = _relationTypeBuilder.Build(); - Reset(); return new Relation(parentId, childId, relationType) { Comment = comment, @@ -69,17 +68,6 @@ namespace Umbraco.Tests.Common.Builders }; } - protected override void Reset() - { - _id = null; - _parentId = null; - _childId = null; - _key = null; - _createDate = null; - _updateDate = null; - _comment = null; - } - int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/RelationTypeBuilder.cs b/src/Umbraco.Tests.Common/Builders/RelationTypeBuilder.cs index dd25ae864a..243f5e3c96 100644 --- a/src/Umbraco.Tests.Common/Builders/RelationTypeBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/RelationTypeBuilder.cs @@ -64,7 +64,6 @@ namespace Umbraco.Tests.Common.Builders var updateDate = _updateDate ?? DateTime.Now; var deleteDate = _deleteDate ?? null; - Reset(); return new RelationType(name, alias, isBidirectional, parentObjectType, childObjectType) { Id = id, @@ -75,20 +74,6 @@ namespace Umbraco.Tests.Common.Builders }; } - protected override void Reset() - { - _alias = null; - _childObjectType = null; - _createDate = null; - _deleteDate = null; - _id = null; - _isBidirectional = null; - _key = null; - _name = null; - _parentObjectType = null; - _updateDate = null; - } - string IWithAliasBuilder.Alias { get => _alias; diff --git a/src/Umbraco.Tests.Common/Builders/SmtpSettingsBuilder.cs b/src/Umbraco.Tests.Common/Builders/SmtpSettingsBuilder.cs index 586aedec9e..344d7bcf87 100644 --- a/src/Umbraco.Tests.Common/Builders/SmtpSettingsBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/SmtpSettingsBuilder.cs @@ -52,7 +52,6 @@ namespace Umbraco.Tests.Common.Builders var port = _port ?? 25; var pickupDirectoryLocation = _pickupDirectoryLocation ?? null; - Reset(); return new TestSmtpSettings() { From = from, @@ -62,14 +61,6 @@ namespace Umbraco.Tests.Common.Builders }; } - protected override void Reset() - { - _from = null; - _host = null; - _port = null; - _pickupDirectoryLocation = null; - } - private class TestSmtpSettings : ISmtpSettings { public string From { get; set; } diff --git a/src/Umbraco.Tests.Common/Builders/StylesheetBuilder.cs b/src/Umbraco.Tests.Common/Builders/StylesheetBuilder.cs index c3eb097e65..ed871b9c31 100644 --- a/src/Umbraco.Tests.Common/Builders/StylesheetBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/StylesheetBuilder.cs @@ -25,17 +25,10 @@ namespace Umbraco.Tests.Common.Builders var path = _path ?? string.Empty; var content = _content ?? string.Empty; - Reset(); return new Stylesheet(path) { Content = content, }; } - - protected override void Reset() - { - _path = null; - _content = null; - } } } diff --git a/src/Umbraco.Tests.Common/Builders/TemplateBuilder.cs b/src/Umbraco.Tests.Common/Builders/TemplateBuilder.cs index 6a29b89e6a..3948d285d3 100644 --- a/src/Umbraco.Tests.Common/Builders/TemplateBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/TemplateBuilder.cs @@ -58,7 +58,6 @@ namespace Umbraco.Tests.Common.Builders var shortStringHelper = new DefaultShortStringHelper(new DefaultShortStringHelperConfig()); - Reset(); return new Template(shortStringHelper, name, alias) { Id = id, @@ -73,21 +72,6 @@ namespace Umbraco.Tests.Common.Builders }; } - protected override void Reset() - { - _id = null; - _key = null; - _alias = null; - _name = null; - _createDate = null; - _updateDate = null; - _path = null; - _content = null; - _isMasterTemplate = null; - _masterTemplateAlias = null; - _masterTemplateId = null; - } - int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/UserBuilder.cs b/src/Umbraco.Tests.Common/Builders/UserBuilder.cs index 4d69280ec5..9dd9ff047f 100644 --- a/src/Umbraco.Tests.Common/Builders/UserBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/UserBuilder.cs @@ -134,7 +134,6 @@ namespace Umbraco.Tests.Common.Builders var startContentIds = _startContentIds ?? new int[0]; var startMediaIds = _startMediaIds ?? new int[0]; - Reset(); return new User( globalSettings, name, @@ -160,31 +159,6 @@ namespace Umbraco.Tests.Common.Builders }; } - protected override void Reset() - { - _id = null; - _key = null; - _createDate = null; - _updateDate = null; - _language = null; - _name = null; - _username = null; - _rawPasswordValue = null; - _email = null; - _failedPasswordAttempts = null; - _isApproved = null; - _isLockedOut = null; - _lastLockoutDate = null; - _lastLoginDate = null; - _lastPasswordChangeDate = null; - _suffix = string.Empty; - _defaultLang = null; - _comments = null; - _sessionTimeout = null; - _startContentIds = null; - _startMediaIds = null; - } - int? IWithIdBuilder.Id { get => _id; diff --git a/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs b/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs index 8b0568d2d4..840cf80dd5 100644 --- a/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs @@ -68,24 +68,10 @@ namespace Umbraco.Tests.Common.Builders x.Icon == _icon && x.Permissions == _permissions && x.AllowedSections == _sectionCollection); - Reset(); return userGroup; } - protected override void Reset() - { - _startContentId = null; - _startMediaId = null; - _alias = null; - _icon = null; - _name = null; - _permissions = Enumerable.Empty(); - _sectionCollection = Enumerable.Empty(); - _suffix = null; - _id = null; - } - - int? IWithIdBuilder.Id + int? IWithIdBuilder.Id { get => _id; set => _id = value; diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs index 92f728d4b8..3799d04751 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs @@ -12,7 +12,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [TestFixture] public class PathValidationTests { - private readonly EntitySlimBuilder _builder = new EntitySlimBuilder(); + private EntitySlimBuilder _builder = new EntitySlimBuilder(); [Test] public void Validate_Path() @@ -93,18 +93,25 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [Test] public void Ensure_Path_Entity_Valid_Recursive_Parent() { + // Not using the shared class-level builder as we need to reset after each usage when creating multiple entities. + _builder = new EntitySlimBuilder(); var parentA = _builder .WithId(999) .Build(); + + _builder = new EntitySlimBuilder(); var parentB = _builder .WithId(888) .WithParentId(999) .Build(); + + _builder = new EntitySlimBuilder(); var parentC = _builder .WithId(777) .WithParentId(888) .Build(); + _builder = new EntitySlimBuilder(); var entity = _builder .WithId(1234) .WithParentId(777) From 89a419e4d128e95e755a5c1e050d1da66b61737b Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Thu, 16 Apr 2020 11:46:02 +0200 Subject: [PATCH 09/12] Clarified comment. --- .../Umbraco.Infrastructure/Models/PathValidationTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs index 3799d04751..5f3bc98fff 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs @@ -93,7 +93,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [Test] public void Ensure_Path_Entity_Valid_Recursive_Parent() { - // Not using the shared class-level builder as we need to reset after each usage when creating multiple entities. + // Re-creating the class-level builder as we need to reset before usage when creating multiple entities. _builder = new EntitySlimBuilder(); var parentA = _builder .WithId(999) From 33853eee434b60ec6b1bae9665926ee61d2cb8e7 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Thu, 16 Apr 2020 12:18:06 +0200 Subject: [PATCH 10/12] Added setup method to instantiate clean builder for all model unit tests within the class. --- .../Umbraco.Infrastructure/Models/DataTypeTests.cs | 8 +++++++- .../Models/DictionaryItemTests.cs | 8 +++++++- .../Umbraco.Infrastructure/Models/LanguageTests.cs | 8 +++++++- .../Umbraco.Infrastructure/Models/MacroTests.cs | 8 +++++++- .../Umbraco.Infrastructure/Models/MemberGroupTests.cs | 8 +++++++- .../Umbraco.Infrastructure/Models/MemberTests.cs | 8 +++++++- .../Models/PathValidationTests.cs | 11 ++++++++--- .../Models/PropertyGroupTests.cs | 8 +++++++- .../Umbraco.Infrastructure/Models/PropertyTests.cs | 8 +++++++- .../Models/PropertyTypeTests.cs | 8 +++++++- .../Umbraco.Infrastructure/Models/RelationTests.cs | 8 +++++++- .../Models/RelationTypeTests.cs | 8 +++++++- .../Umbraco.Infrastructure/Models/StylesheetTests.cs | 8 +++++++- .../Umbraco.Infrastructure/Models/TemplateTests.cs | 9 +++++++-- .../Models/UserExtensionsTests.cs | 8 +++++++- .../Umbraco.Infrastructure/Models/UserTests.cs | 8 +++++++- 16 files changed, 113 insertions(+), 19 deletions(-) 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.UnitTests/Umbraco.Infrastructure/Models/MacroTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MacroTests.cs index 468b77c202..9137c67e7e 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MacroTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/MacroTests.cs @@ -11,7 +11,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [TestFixture] public class MacroTests { - private readonly MacroBuilder _builder = new MacroBuilder(); + private MacroBuilder _builder; + + [SetUp] + public void SetUp() + { + _builder = new MacroBuilder(); + } [Test] public void Can_Deep_Clone() 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 85cd84526a..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() diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs index 5f3bc98fff..017d2c7774 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs @@ -12,7 +12,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [TestFixture] public class PathValidationTests { - private EntitySlimBuilder _builder = new EntitySlimBuilder(); + private EntitySlimBuilder _builder; + + [SetUp] + public void SetUp() + { + _builder = new EntitySlimBuilder(); + } [Test] public void Validate_Path() @@ -93,12 +99,11 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [Test] public void Ensure_Path_Entity_Valid_Recursive_Parent() { - // Re-creating the class-level builder as we need to reset before usage when creating multiple entities. - _builder = new EntitySlimBuilder(); var parentA = _builder .WithId(999) .Build(); + // 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) 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.UnitTests/Umbraco.Infrastructure/Models/UserExtensionsTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserExtensionsTests.cs index 979d18c5a1..d3d59e77ba 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserExtensionsTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserExtensionsTests.cs @@ -13,7 +13,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [TestFixture] public class UserExtensionsTests { - private readonly UserBuilder _userBuilder = new UserBuilder(); + 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 diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserTests.cs index 281f8cd040..db0761b165 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/UserTests.cs @@ -12,7 +12,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models [TestFixture] public class UserTests { - private readonly UserBuilder _builder = new UserBuilder(); + private UserBuilder _builder; + + [SetUp] + public void SetUp() + { + _builder = new UserBuilder(); + } [Test] public void Can_Deep_Clone() From 14072b0c21032fb9f73ac96281d3f5c23d403cc9 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Thu, 16 Apr 2020 19:54:25 +0200 Subject: [PATCH 11/12] nuget fix --- NuGet.Config | 1 - 1 file changed, 1 deletion(-) diff --git a/NuGet.Config b/NuGet.Config index 64425091dc..31fd84e456 100644 --- a/NuGet.Config +++ b/NuGet.Config @@ -7,6 +7,5 @@ --> - From 295d0b73b3b351d85e6d5299c300f1c464cc6639 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Thu, 16 Apr 2020 20:12:06 +0200 Subject: [PATCH 12/12] nuget fix --- NuGet.Config | 1 + 1 file changed, 1 insertion(+) diff --git a/NuGet.Config b/NuGet.Config index 31fd84e456..64425091dc 100644 --- a/NuGet.Config +++ b/NuGet.Config @@ -7,5 +7,6 @@ --> +