PointsRecordApplicationTest.cs 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using Hotline.Api.Controllers;
  2. using Hotline.Application.Snapshot.Contracts;
  3. using Hotline.Identity.Accounts;
  4. using Hotline.Identity.Roles;
  5. using Hotline.Orders;
  6. using Hotline.Settings;
  7. using Hotline.Share.Dtos.Snapshot;
  8. using Hotline.Share.Tools;
  9. using Hotline.Snapshot.IRepository;
  10. using Hotline.ThirdAccountDomainServices;
  11. using Hotline.ThirdAccountDomainServices.Interfaces;
  12. using Hotline.Users;
  13. using Microsoft.AspNetCore.Http;
  14. using Microsoft.Extensions.DependencyInjection;
  15. using Shouldly;
  16. using System;
  17. using System.Collections.Generic;
  18. using System.Linq;
  19. using System.Text;
  20. using System.Threading.Tasks;
  21. using XF.Domain.Authentications;
  22. using XF.Domain.Cache;
  23. using XF.Domain.Repository;
  24. namespace Hotline.Tests.Application;
  25. public class PointsRecordApplicationTest : TestBase
  26. {
  27. private readonly ISnapshotPointsApplication _pointsRecordApplication;
  28. private readonly ISnapshotApplication _snapshotApplication;
  29. private readonly ISessionContext _sessionContext;
  30. private readonly ICitizenRepository _citizenRepository;
  31. private readonly ISafetyTypeRepository _safetyTypeRepository;
  32. public PointsRecordApplicationTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdIdentiyService, IThirdAccountRepository thirdAccountRepository, ITypedCache<SystemSetting> cacheSettingData, ThirdAccounSupplierFactory thirdAccountDomainFactory, ISnapshotPointsApplication pointsRecordApplication, ISnapshotApplication snapshotApplication, IServiceProvider serviceProvider, ISessionContext sessionContext, ICitizenRepository citizenRepository, ISafetyTypeRepository safetyTypeRepository) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdIdentiyService, thirdAccountRepository, cacheSettingData, thirdAccountDomainFactory, serviceProvider)
  33. {
  34. _pointsRecordApplication = pointsRecordApplication;
  35. _snapshotApplication = snapshotApplication;
  36. _sessionContext = sessionContext;
  37. _citizenRepository = citizenRepository;
  38. _safetyTypeRepository = safetyTypeRepository;
  39. }
  40. [Fact]
  41. public async Task GetPointsItems_Test()
  42. {
  43. var inDto = new PointsItemsInDto
  44. {
  45. StartTime = DateTime.Now.AddDays(-1),
  46. EndTime = DateTime.Now
  47. };
  48. var items = await _pointsRecordApplication.GetPointsItems(inDto).ToListAsync();
  49. items.ShouldNotBeNull();
  50. }
  51. [Fact]
  52. public async Task UpdateIsSecurityMax_Test()
  53. {
  54. SetWeiXin();
  55. var inDto = new UpdateIsSecurityMaxAsync
  56. {
  57. UserId = _sessionContext.UserId,
  58. IsSecurityMax = false
  59. };
  60. await _pointsRecordApplication.UpdateIsSecurityMaxAsync(inDto, CancellationToken.None);
  61. var citizen = await _citizenRepository.Queryable()
  62. .Where(m => m.Id == inDto.UserId)
  63. .Includes(m => m.SafetyTypes)
  64. .FirstAsync();
  65. citizen.SafetyTypes.Any(m => m.Name == "安全卫士").ShouldBeFalse();
  66. inDto.IsSecurityMax = true;
  67. await _pointsRecordApplication.UpdateIsSecurityMaxAsync(inDto, CancellationToken.None);
  68. citizen = await _citizenRepository.Queryable()
  69. .Where(m => m.Id == inDto.UserId)
  70. .Includes(m => m.SafetyTypes)
  71. .FirstAsync();
  72. citizen.SafetyTypes.Any(m => m.Name == "安全卫士").ShouldBeTrue();
  73. }
  74. [Fact]
  75. public async Task GetPointsRank_Test()
  76. {
  77. SetWeiXin();
  78. var item = await _snapshotApplication.GetPointsRankAsync();
  79. item.ShouldNotBeNull();
  80. item.Bulletins.Items.Any(m => m.Title.IsNullOrEmpty()).ShouldBeFalse();
  81. item.Bulletins.Items.Any(m => m.BulletinId.IsNullOrEmpty()).ShouldBeFalse();
  82. item.VideoBulletin.ShouldNotBeNull();
  83. }
  84. }