diff --git a/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs b/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs index 840cf80dd5..432e2921db 100644 --- a/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/UserGroupBuilder.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using Moq; using Umbraco.Core.Models.Membership; +using Umbraco.Core.Strings; using Umbraco.Tests.Common.Builders.Interfaces; namespace Umbraco.Tests.Common.Builders @@ -20,15 +21,16 @@ namespace Umbraco.Tests.Common.Builders IWithAliasBuilder, IWithNameBuilder { - private int? _startContentId; - private int? _startMediaId; + private int? _id; private string _alias; private string _icon; private string _name; private IEnumerable _permissions = Enumerable.Empty(); private IEnumerable _sectionCollection = Enumerable.Empty(); private string _suffix; - private int? _id; + private int? _startContentId; + private int? _startMediaId; + private int? _userCount; public UserGroupBuilder(TParent parentBuilder) : base(parentBuilder) { @@ -45,6 +47,36 @@ namespace Umbraco.Tests.Common.Builders return this; } + public UserGroupBuilder WithUserCount(int userCount) + { + _userCount = userCount; + return this; + } + + public UserGroupBuilder WithPermissions(string permissions) + { + _permissions = permissions.Split(); + return this; + } + + public UserGroupBuilder WithPermissions(IList permissions) + { + _permissions = permissions; + return this; + } + + public UserGroupBuilder WithStartContentId(int startContentId) + { + _startContentId = startContentId; + return this; + } + + public UserGroupBuilder WithStartMediaId(int startMediaId) + { + _startMediaId = startMediaId; + return this; + } + public IReadOnlyUserGroup BuildReadOnly(IUserGroup userGroup) { return Mock.Of(x => @@ -60,14 +92,26 @@ namespace Umbraco.Tests.Common.Builders public override IUserGroup Build() { - var userGroup = Mock.Of(x => - x.StartContentId == _startContentId && - x.StartMediaId == _startMediaId && - x.Name == (_name ?? ("TestUserGroup" + _suffix)) && - x.Alias == (_alias ?? ("testUserGroup" + _suffix)) && - x.Icon == _icon && - x.Permissions == _permissions && - x.AllowedSections == _sectionCollection); + var id = _id ?? 1; + var name = _name ?? ("TestUserGroup" + _suffix); + var alias = _alias ?? ("testUserGroup" + _suffix); + var userCount = _userCount ?? 0; + var startContentId = _startContentId ?? -1; + var startMediaId = _startMediaId ?? -1; + var icon = _icon ?? string.Empty; + + var shortStringHelper = new DefaultShortStringHelper(new DefaultShortStringHelperConfig()); + + var userGroup = new UserGroup(shortStringHelper, userCount, alias, name, _permissions, icon); + userGroup.Id = id; + userGroup.StartContentId = startContentId; + userGroup.StartMediaId = startMediaId; + + foreach (var item in _sectionCollection) + { + userGroup.AddAllowedSection(item); + } + return userGroup; } @@ -77,7 +121,6 @@ namespace Umbraco.Tests.Common.Builders set => _id = value; } - string IWithIconBuilder.Icon { get => _icon; diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/UserGroupBuilderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/UserGroupBuilderTests.cs new file mode 100644 index 0000000000..2cd2887878 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/UserGroupBuilderTests.cs @@ -0,0 +1,49 @@ +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 UserGroupBuilderTests + { + [Test] + public void Is_Built_Correctly() + { + // Arrange + const int testId = 10; + const string testAlias = "test"; + const string testName = "Test"; + const int testUserCount = 11; + const string testIcon = "icon"; + const string testPermissions = "abc"; + const int testStartContentId = 3; + const int testStartMediaId = 8; + + var builder = new UserGroupBuilder(); + + // Act + var userGroup = builder + .WithId(testId) + .WithAlias(testAlias) + .WithName(testName) + .WithUserCount(testUserCount) + .WithIcon(testIcon) + .WithPermissions(testPermissions) + .WithStartContentId(testStartContentId) + .WithStartMediaId(testStartMediaId) + .Build(); + + // Assert + Assert.AreEqual(testId, userGroup.Id); + Assert.AreEqual(testAlias, userGroup.Alias); + Assert.AreEqual(testName, userGroup.Name); + Assert.AreEqual(testUserCount, userGroup.UserCount); + Assert.AreEqual(testIcon, userGroup.Icon); + Assert.AreEqual(testPermissions, string.Join(string.Empty, userGroup.Permissions)); + Assert.AreEqual(testStartContentId, userGroup.StartContentId); + Assert.AreEqual(testStartMediaId, userGroup.StartMediaId); + } + } +}