using Hotline.Application.Orders; using Hotline.Caching.Interfaces; using Hotline.Orders; using Hotline.Push.FWMessage; using Hotline.Push.Notifies; using Hotline.Settings; using Hotline.Share.Dtos.FlowEngine; using Hotline.Share.Dtos.Order; using Hotline.Share.Enums.FlowEngine; using Hotline.Share.Enums.Order; using Mapster; using Shouldly; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using XF.Domain.Repository; namespace Hotline.Application.Tests.Application; public class OrderApplicationTest { private readonly IOrderApplication _orderApplication; private readonly ISystemDicDataCacheManager _systemDicDataCacheManager; private readonly IRepository _orderVisitRepository; private readonly IRepository _orderRepository; private readonly IRepository _messageRepository; public OrderApplicationTest(IOrderApplication orderApplication, IRepository orderVisitRepository, IRepository messageRepository) { _orderApplication = orderApplication; _orderVisitRepository = orderVisitRepository; _orderRepository = orderRepository; _systemDicDataCacheManager = systemDicDataCacheManager; _messageRepository = messageRepository; } [Theory] [InlineData(1)] [InlineData(2)] [InlineData(3)] [InlineData(4)] [InlineData(5)] [InlineData(6)] [InlineData(7)] public async Task VisitPushSMS_Test(int count) { var orderVisit = await _orderVisitRepository.Queryable() .Where(m => m.VisitState == EVisitState.WaitForVisit) .OrderByDescending(m => m.CreationTime) .FirstAsync(); orderVisit.ShouldNotBeNull("缺少 回访单 (order_visit) VisitState = 10 的数据."); var dto = new VisitSmsInDto { Ids = new List { orderVisit.Id } }; await _orderApplication.VisitPushSMSAsync(dto, new CancellationToken()); var visit = await _orderVisitRepository.Queryable().Where(m => m.Id == orderVisit.Id).FirstAsync(); visit.VisitState.ShouldBe(EVisitState.SMSVisiting); visit.VisitType.ShouldBe(EVisitType.SmsVisit); } [Theory] [InlineData("08dcd937-5800-4e44-81d7-68a318dbc251", "沟通地点", "张三", "13666666666", "63344B7C-D2CB-4B40-8B13-009923393573")] public async Task SaveOrderWorkflowInfo_Test(string workflowId, string realCommunicationAddress, string realHandlerName, string realHandlerPhone, string transpondCityId ) { await _orderRepository.Updateable() .SetColumns(m => m.RealCommunicationAddress == null) .Where(m => m.WorkflowId == workflowId) .ExecuteCommandAsync(); var time = DateTime.Now; var dicSystem = _systemDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.TranspondCity).First(); var dto = new NextWorkflowDto { RealCommunicationAddress = realCommunicationAddress, WorkflowId = workflowId, RealHandlerName = realHandlerName, RealHandlerPhone = realHandlerPhone, RealCommunicationMode = ERealCommunicationMode.Locale, RealCommunicationTime = time, RealIsContacted = true, RealContactLocale = true, IsOther = true, OtherRemark = "备注", TranspondCityId = dicSystem.Id, TranspondCityName = dicSystem.DicDataName, TranspondCityValue = dicSystem.DicDataValue, }; var order = await _orderApplication.SaveOrderWorkflowInfo(dto, new CancellationToken()); order = await _orderRepository.GetAsync(order.Id); order.RealCommunicationAddress.ShouldBe(realCommunicationAddress); order.RealHandlerPhone.ShouldBe(realHandlerPhone); order.RealHandlerName.ShouldBe(realHandlerName); order.RealCommunicationMode.ShouldBe(ERealCommunicationMode.Locale); order.RealCommunicationTime.Value.ToString("yyyy-MM-dd hh:mm:ss").ShouldBe(time.ToString("yyyy-MM-dd hh:mm:ss")); order.RealIsContacted.ShouldBe(true); order.RealContactLocale.ShouldBe(true); order.IsOther.ShouldBe(true); order.OtherRemark.ShouldBe("备注"); order.TranspondCityId.ShouldBe(dicSystem.Id); order.TranspondCityName.ShouldBe(dicSystem.DicDataName); order.TranspondCityValue.ShouldBe(dicSystem.DicDataValue); } [Fact] public async Task MapConfig_Test() { var data = await _messageRepository.Queryable().OrderByDescending(m => m.CreationTime) .FirstAsync(); var m = data.Adapt(); m.NotifyDto.Name.ShouldBe(data.Name); m.NotifyDto.PushBusiness.ShouldBe(data.PushBusiness); } }