SnapshotUserApplicationTest.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using Hotline.Api.Controllers;
  2. using Hotline.Application.Snapshot.Contracts;
  3. using Hotline.Caching.Interfaces;
  4. using Hotline.Identity.Accounts;
  5. using Hotline.Identity.Roles;
  6. using Hotline.Orders;
  7. using Hotline.Settings;
  8. using Hotline.Share.Dtos.Snapshot;
  9. using Hotline.Share.Tools;
  10. using Hotline.Snapshot;
  11. using Hotline.Snapshot.IRepository;
  12. using Hotline.ThirdAccountDomainServices;
  13. using Hotline.ThirdAccountDomainServices.Interfaces;
  14. using Hotline.Users;
  15. using Microsoft.AspNetCore.Http;
  16. using Microsoft.Extensions.DependencyInjection;
  17. using Shouldly;
  18. using XF.Domain.Cache;
  19. using XF.Domain.Repository;
  20. namespace Hotline.Tests.Application;
  21. public class SnapshotUserApplicationTest : TestBase
  22. {
  23. private readonly ISnapshotUserApplication _snapshotUserApplication;
  24. private readonly ISystemDicDataCacheManager _dicData;
  25. private readonly ICitizenRepository _citizenRepository;
  26. private readonly ISafetyTypeRepository _safetyTypeRepository;
  27. public SnapshotUserApplicationTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdIdentiyService, IThirdAccountRepository thirdAccountRepository, ITypedCache<SystemSetting> cacheSettingData, ThirdAccounSupplierFactory thirdAccountDomainFactory, IServiceProvider serviceProvider, ISnapshotUserApplication snapshotUserApplication, ISystemDicDataCacheManager dicData, ICitizenRepository citizenRepository, ISafetyTypeRepository safetyTypeRepository) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdIdentiyService, thirdAccountRepository, cacheSettingData, thirdAccountDomainFactory, serviceProvider)
  28. {
  29. _snapshotUserApplication = snapshotUserApplication;
  30. _dicData = dicData;
  31. _citizenRepository = citizenRepository;
  32. _safetyTypeRepository = safetyTypeRepository;
  33. }
  34. [Fact]
  35. public async Task SnapshotUserApplication_Test()
  36. {
  37. var newSafetyType = new SafetyType { Name = "安全卫士" };
  38. var safetyType = await _safetyTypeRepository.Queryable().Where(m => m.Name == newSafetyType.Name).FirstAsync();
  39. if (newSafetyType == null)
  40. safetyType.Id = await _safetyTypeRepository.AddAsync(newSafetyType);
  41. var citizen = await _citizenRepository.Queryable()
  42. .LeftJoin<CitizenRelationSafetyType>((citizen, relation) => relation.CitizenId == citizen.Id)
  43. .Where((citizen, relation) => relation.Id == null)
  44. .FirstAsync();
  45. var addDto = new AddCitizenRelationSafetyTypeInDto
  46. {
  47. CitizenIds = [citizen.Id],
  48. SafetyTypeId = safetyType.Id,
  49. };
  50. await _snapshotUserApplication.AddCitizenRelationSafetyType(addDto, CancellationToken.None);
  51. var inDto = new CitizenRelationSafetyTypeInDto
  52. {
  53. SafetyTypeId = safetyType.Id
  54. };
  55. var items = await _snapshotUserApplication.GetCitizenRelationSafetyType(inDto).ToListAsync();
  56. var item = items.FirstOrDefault(m => m.CitizenId == citizen.Id && m.SafetyTypeId == safetyType.Id);
  57. item.ShouldNotBeNull();
  58. item.SafetyTypeName.ShouldBe(safetyType.Name);
  59. item.SafetyTypeId.ShouldBe(safetyType.Id);
  60. item.CitizenId.ShouldBe(citizen.Id);
  61. item.CitizenName.ShouldBe(citizen.Name);
  62. }
  63. }