using Hotline.Api.Controllers; using Hotline.Application.Snapshot.Contracts; using Hotline.Caching.Interfaces; using Hotline.Identity.Accounts; using Hotline.Identity.Roles; using Hotline.Orders; using Hotline.Settings; using Hotline.Share.Dtos.Snapshot; using Hotline.Share.Tools; using Hotline.Snapshot; using Hotline.Snapshot.IRepository; using Hotline.ThirdAccountDomainServices; using Hotline.ThirdAccountDomainServices.Interfaces; using Hotline.Users; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; using Shouldly; using XF.Domain.Cache; using XF.Domain.Repository; namespace Hotline.Tests.Application; public class SnapshotUserApplicationTest : TestBase { private readonly ISnapshotUserApplication _snapshotUserApplication; private readonly ISystemDicDataCacheManager _dicData; private readonly ICitizenRepository _citizenRepository; private readonly ISafetyTypeRepository _safetyTypeRepository; public SnapshotUserApplicationTest(IAccountRepository accountRepository, IRepository roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository userRepository, IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdIdentiyService, IThirdAccountRepository thirdAccountRepository, ITypedCache 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) { _snapshotUserApplication = snapshotUserApplication; _dicData = dicData; _citizenRepository = citizenRepository; _safetyTypeRepository = safetyTypeRepository; } [Fact] public async Task SnapshotUserApplication_Test() { var newSafetyType = new SafetyType { Name = "安全卫士" }; var safetyType = await _safetyTypeRepository.Queryable().Where(m => m.Name == newSafetyType.Name).FirstAsync(); if (newSafetyType == null) safetyType.Id = await _safetyTypeRepository.AddAsync(newSafetyType); var citizen = await _citizenRepository.Queryable() .LeftJoin((citizen, relation) => relation.CitizenId == citizen.Id) .Where((citizen, relation) => relation.Id == null) .FirstAsync(); var addDto = new AddCitizenRelationSafetyTypeInDto { CitizenIds = [citizen.Id], SafetyTypeId = safetyType.Id, }; await _snapshotUserApplication.AddCitizenRelationSafetyType(addDto, CancellationToken.None); var inDto = new CitizenRelationSafetyTypeInDto { SafetyTypeId = safetyType.Id }; var items = await _snapshotUserApplication.GetCitizenRelationSafetyType(inDto).ToListAsync(); var item = items.FirstOrDefault(m => m.CitizenId == citizen.Id && m.SafetyTypeId == safetyType.Id); item.ShouldNotBeNull(); item.SafetyTypeName.ShouldBe(safetyType.Name); item.SafetyTypeId.ShouldBe(safetyType.Id); item.CitizenId.ShouldBe(citizen.Id); item.CitizenName.ShouldBe(citizen.Name); } }