From 6c50630c4d6576446fc2338714feaefbf28c4ed1 Mon Sep 17 00:00:00 2001 From: 杨宇千 Date: Thu, 8 Aug 2019 17:41:59 +0800 Subject: Reorganize unit tests. --- Timeline.Tests/Mock/Data/TestUsers.cs | 52 +++++++++++++++++++++++++++++++ Timeline.Tests/Mock/Services/TestClock.cs | 25 +++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 Timeline.Tests/Mock/Data/TestUsers.cs create mode 100644 Timeline.Tests/Mock/Services/TestClock.cs (limited to 'Timeline.Tests/Mock') diff --git a/Timeline.Tests/Mock/Data/TestUsers.cs b/Timeline.Tests/Mock/Data/TestUsers.cs new file mode 100644 index 00000000..d784e48c --- /dev/null +++ b/Timeline.Tests/Mock/Data/TestUsers.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using System.Linq; +using Timeline.Entities; +using Timeline.Models; +using Timeline.Services; +using Timeline.Tests.Helpers; + +namespace Timeline.Tests.Mock.Data +{ + public static class MockUsers + { + static MockUsers() + { + var mockUsers = new List(); + var passwordService = new PasswordService(); + + mockUsers.Add(new User + { + Name = UserUsername, + EncryptedPassword = passwordService.HashPassword(UserPassword), + RoleString = UserUtility.IsAdminToRoleString(false), + Version = 0, + }); + mockUsers.Add(new User + { + Name = AdminUsername, + EncryptedPassword = passwordService.HashPassword(AdminPassword), + RoleString = UserUtility.IsAdminToRoleString(true), + Version = 0, + }); + + Users = mockUsers; + + var mockUserInfos = mockUsers.Select(u => UserUtility.CreateUserInfo(u)).ToList(); + UserUserInfo = mockUserInfos[0]; + AdminUserInfo = mockUserInfos[1]; + mockUserInfos.Sort(UserInfoComparers.Comparer); + UserInfos = mockUserInfos; + } + + public const string UserUsername = "user"; + public const string AdminUsername = "admin"; + public const string UserPassword= "user"; + public const string AdminPassword = "admin"; + + internal static IReadOnlyList Users { get; } + public static IReadOnlyList UserInfos { get; } + + public static UserInfo AdminUserInfo { get; } + public static UserInfo UserUserInfo { get; } + } +} diff --git a/Timeline.Tests/Mock/Services/TestClock.cs b/Timeline.Tests/Mock/Services/TestClock.cs new file mode 100644 index 00000000..0082171e --- /dev/null +++ b/Timeline.Tests/Mock/Services/TestClock.cs @@ -0,0 +1,25 @@ +using Microsoft.AspNetCore.Mvc.Testing; +using Microsoft.Extensions.DependencyInjection; +using System; +using Timeline.Services; + +namespace Timeline.Tests.Mock.Services +{ + public class TestClock : IClock + { + public DateTime? MockCurrentTime { get; set; } = null; + + public DateTime GetCurrentTime() + { + return MockCurrentTime.GetValueOrDefault(DateTime.Now); + } + } + + public static class TestClockWebApplicationFactoryExtensions + { + public static TestClock GetTestClock(this WebApplicationFactory factory) where T : class + { + return factory.Server.Host.Services.GetRequiredService() as TestClock; + } + } +} -- cgit v1.2.3