Files
Umbraco-CMS/src/Umbraco.Tests/TestHelpers/Entities/MockedUser.cs
2020-08-24 16:06:09 +02:00

63 lines
2.1 KiB
C#

using Moq;
using System;
using System.Collections.Generic;
using Umbraco.Core.Models.Membership;
using Umbraco.Tests.Common.Builders;
namespace Umbraco.Tests.TestHelpers.Entities
{
public class MockedUser
{
/// <summary>
/// Returns a <see cref="Mock{IUser}"/> and ensures that the ToUserCache and FromUserCache methods are mapped correctly for
/// dealing with start node caches
/// </summary>
/// <returns></returns>
internal static Mock<IUser> GetUserMock()
{
var userCache = new Dictionary<string, object>();
var userMock = new Mock<IUser>();
userMock.Setup(x => x.FromUserCache<int[]>(It.IsAny<string>())).Returns((string key) => userCache.TryGetValue(key, out var val) ? val is int[] iVal ? iVal : null : null);
userMock.Setup(x => x.ToUserCache<int[]>(It.IsAny<string>(), It.IsAny<int[]>())).Callback((string key, int[] val) => userCache[key] = val);
return userMock;
}
internal static User CreateUser(string suffix = "")
{
var globalSettings = new GlobalSettingsBuilder().Build();
var user = new User(globalSettings)
{
Language = "en",
IsApproved = true,
Name = "TestUser" + suffix,
RawPasswordValue = "testing",
IsLockedOut = false,
Email = "test" + suffix + "@test.com",
Username = "TestUser" + suffix
};
return user;
}
internal static IEnumerable<IUser> CreateMulipleUsers(int amount, Action<int, IUser> onCreating = null)
{
var list = new List<IUser>();
var globalSettings = new GlobalSettingsBuilder().Build();
for (int i = 0; i < amount; i++)
{
var name = "Member No-" + i;
var user = new User(globalSettings, name, "test" + i + "@test.com", "test" + i, "test" + i);
onCreating?.Invoke(i, user);
user.ResetDirtyProperties(false);
list.Add(user);
}
return list;
}
}
}