OrderDelayControllerTest.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. using Hotline.Tests.Mock;
  2. using System.Diagnostics;
  3. using Hotline.Api.Controllers;
  4. using Hotline.Api.Controllers.OrderApi;
  5. using Hotline.Identity.Accounts;
  6. using Hotline.Identity.Roles;
  7. using Hotline.Settings;
  8. using Hotline.ThirdAccountDomainServices;
  9. using Hotline.ThirdAccountDomainServices.Interfaces;
  10. using Hotline.Users;
  11. using Microsoft.AspNetCore.Http;
  12. using Microsoft.Extensions.DependencyInjection;
  13. using XF.Domain.Cache;
  14. using XF.Domain.Repository;
  15. using Hotline.Orders;
  16. using Hotline.Share.Dtos.FlowEngine;
  17. using Hotline.Share.Dtos.FlowEngine.Workflow;
  18. using Hotline.Share.Dtos.Order;
  19. using Hotline.Share.Dtos.Order.OrderDelay;
  20. using Hotline.Share.Enums.FlowEngine;
  21. using Hotline.Share.Enums.Order;
  22. using MapsterMapper;
  23. using Xunit.Abstractions;
  24. using Microsoft.AspNetCore.Mvc;
  25. namespace Hotline.Tests.Controller
  26. {
  27. public class OrderDelayControllerTest : TestBase
  28. {
  29. private readonly OrderController _orderController;
  30. private readonly OrderDelayController _orderDelayController;
  31. private readonly OrderServiceMock _orderServiceMock;
  32. private readonly IOrderDelayRepository _orderDelayRepository;
  33. private readonly IOrderRepository _orderRepository;
  34. private readonly IMapper _mapper;
  35. private readonly ITestOutputHelper _testOutputHelper;
  36. public OrderDelayControllerTest(IAccountRepository accountRepository, IRepository<Role> roleRepository,
  37. UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository,
  38. IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdIdentiyService,
  39. IThirdAccountRepository thirdAccountRepository, ITypedCache<SystemSetting> cacheSettingData,
  40. ThirdAccounSupplierFactory thirdAccountDomainFactory,
  41. OrderController orderController,
  42. OrderDelayController orderDelayController,
  43. OrderServiceMock orderServiceMock,
  44. IOrderDelayRepository orderDelayRepository,
  45. IOrderRepository orderRepository,
  46. IMapper mapper,
  47. ITestOutputHelper testOutputHelper, IServiceProvider serviceProvider) : base(accountRepository, roleRepository,
  48. userController, scopeFactory, userRepository, httpContextAccessor, thirdIdentiyService,
  49. thirdAccountRepository, cacheSettingData, thirdAccountDomainFactory, serviceProvider)
  50. {
  51. _orderController = orderController;
  52. _orderDelayController = orderDelayController;
  53. _orderServiceMock = orderServiceMock;
  54. _orderDelayRepository = orderDelayRepository;
  55. _orderRepository = orderRepository;
  56. _mapper = mapper;
  57. _testOutputHelper = testOutputHelper;
  58. _orderController.ControllerContext = new ControllerContext
  59. {
  60. HttpContext = new DefaultHttpContext
  61. {
  62. RequestAborted = CancellationToken.None
  63. }
  64. };
  65. _orderDelayController.ControllerContext = new ControllerContext
  66. {
  67. HttpContext = new DefaultHttpContext
  68. {
  69. RequestAborted = CancellationToken.None
  70. }
  71. };
  72. }
  73. [Fact]
  74. public async Task OrderDelayBatchReviewTest()
  75. {
  76. SetZuoXi();
  77. var delayIds = new List<string>();
  78. for (int i = 0; i < 6; i++)
  79. {
  80. var order = _orderServiceMock.CreateOrder()
  81. .办理到一级部门()
  82. //.办理到二级部门(Set一级部门)
  83. //.办理一级部门汇总(Set二级部门)
  84. //.办理到归档(Set一级部门)
  85. //.发布工单(SetZuoXi)
  86. .GetCreateResult();
  87. //var order = await _orderRepository.Queryable()
  88. // .FirstAsync(o => o.Id == orderId);
  89. var delayId = _orderServiceMock.申请延期(Set一级部门);
  90. delayIds.Add(delayId);
  91. }
  92. Set班长();
  93. var delays = await _orderDelayController.QueryWaited(new DelayListDto
  94. {
  95. IsApply = false,
  96. });
  97. var delayWithIds = delays
  98. .Where(d => delayIds.Contains(d.Id))
  99. .Select(d => new DelayWithStepId
  100. {
  101. DelayId = d.Id,
  102. StepId = d.StepId,
  103. WorkflowId = d.WorkflowId
  104. }).ToList();
  105. var delay = delays.First();
  106. var option = _orderController.OrderDelayNextsteps(delay.WorkflowId).Result as NextStepsWithOpinionDto<NextStepOption>;
  107. var step = option.Steps.First(d=>d.StepType == EStepType.End);
  108. //var req = new BatchDelayNextFlowDto
  109. //{
  110. // DelayId = delayIds.ToArray(),
  111. // IsPass = true,
  112. // NextWorkflow = new NextWorkflowDto
  113. // {
  114. // NextStepCode = step.Key,
  115. // NextStepName = step.Value,
  116. // }
  117. //};
  118. var req = new BatchOrderDelayReviewRequest
  119. {
  120. IsPass = true,
  121. DelayWithStepIds = delayWithIds,
  122. NextWorkflow = new NextWorkflowDto
  123. {
  124. NextStepCode = step.Key,
  125. NextStepName = step.Value
  126. }
  127. };
  128. _testOutputHelper.WriteLine($"开始审批");
  129. var sw = new Stopwatch();
  130. sw.Start();
  131. await _orderDelayController.BatchReview(req);
  132. sw.Stop();
  133. _testOutputHelper.WriteLine($"耗时:{sw.ElapsedMilliseconds}ms");
  134. //var delay = await _orderDelayRepository.Queryable()
  135. // .Includes(d => d.Order)
  136. // .FirstAsync(d => d.Id == delayId);
  137. //Assert.Equal(EDelayState.Pass, delay.DelayState);
  138. //Assert.True(delay.Order.ExpiredTime > order.ExpiredTime);
  139. //Console.WriteLine(delay.Id);
  140. }
  141. [Fact]
  142. public void QueryWaitForApproveDelaysTest()
  143. {
  144. _testOutputHelper.WriteLine("123");
  145. }
  146. }
  147. }