OrderDelayControllerTest.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using Hotline.Tests.Mock;
  2. using System.Diagnostics;
  3. using Hotline.Api.Controllers;
  4. using Hotline.Identity.Accounts;
  5. using Hotline.Identity.Roles;
  6. using Hotline.Settings;
  7. using Hotline.ThirdAccountDomainServices;
  8. using Hotline.ThirdAccountDomainServices.Interfaces;
  9. using Hotline.Users;
  10. using Microsoft.AspNetCore.Http;
  11. using Microsoft.Extensions.DependencyInjection;
  12. using XF.Domain.Cache;
  13. using XF.Domain.Repository;
  14. using Hotline.Orders;
  15. using Hotline.Share.Dtos.FlowEngine;
  16. using Hotline.Share.Dtos.FlowEngine.Workflow;
  17. using Hotline.Share.Dtos.Order;
  18. using Hotline.Share.Enums.FlowEngine;
  19. using Hotline.Share.Enums.Order;
  20. using MapsterMapper;
  21. using Xunit.Abstractions;
  22. namespace Hotline.Tests.Controller
  23. {
  24. public class OrderDelayControllerTest : TestBase
  25. {
  26. private readonly OrderController _orderController;
  27. private readonly OrderServiceMock _orderServiceMock;
  28. private readonly IOrderDelayRepository _orderDelayRepository;
  29. private readonly IOrderRepository _orderRepository;
  30. private readonly IMapper _mapper;
  31. private readonly ITestOutputHelper _testOutputHelper;
  32. public OrderDelayControllerTest(IAccountRepository accountRepository, IRepository<Role> roleRepository,
  33. UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository,
  34. IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdIdentiyService,
  35. IThirdAccountRepository thirdAccountRepository, ITypedCache<SystemSetting> cacheSettingData,
  36. ThirdAccounSupplierFactory thirdAccountDomainFactory,
  37. OrderController orderController,
  38. OrderServiceMock orderServiceMock,
  39. IOrderDelayRepository orderDelayRepository,
  40. IOrderRepository orderRepository,
  41. IMapper mapper,
  42. ITestOutputHelper testOutputHelper, IServiceProvider serviceProvider) : base(accountRepository, roleRepository,
  43. userController, scopeFactory, userRepository, httpContextAccessor, thirdIdentiyService,
  44. thirdAccountRepository, cacheSettingData, thirdAccountDomainFactory, serviceProvider)
  45. {
  46. _orderController = orderController;
  47. _orderServiceMock = orderServiceMock;
  48. _orderDelayRepository = orderDelayRepository;
  49. _orderRepository = orderRepository;
  50. _mapper = mapper;
  51. _testOutputHelper = testOutputHelper;
  52. }
  53. [Fact]
  54. public async Task OrderDelayBatchApproveTest()
  55. {
  56. SetZuoXi();
  57. var delayIds = new List<string>();
  58. for (int i = 0; i < 10; i++)
  59. {
  60. var orderId = _orderServiceMock.CreateOrder()
  61. .办理到一级部门()
  62. .办理到二级部门(Set一级部门)
  63. .GetCreateResult().Id;
  64. //var order = await _orderRepository.Queryable()
  65. // .FirstAsync(o => o.Id == orderId);
  66. var delayId = _orderServiceMock.申请延期(Set二级部门);
  67. delayIds.Add(delayId);
  68. }
  69. var delay = await _orderDelayRepository.GetAsync(delayIds.First());
  70. Set一级部门();
  71. var option = _orderController.OrderDelayNextsteps(delay.WorkflowId).Result as NextStepsWithOpinionDto<NextStepOption>;
  72. var step = option.Steps.First();
  73. var req = new BatchDelayNextFlowDto
  74. {
  75. DelayId = delayIds.ToArray(),
  76. IsPass = true,
  77. NextWorkflow = new NextWorkflowDto
  78. {
  79. NextStepCode = step.Key,
  80. NextStepName = step.Value,
  81. }
  82. };
  83. _testOutputHelper.WriteLine($"开始审批");
  84. var sw = new Stopwatch();
  85. sw.Start();
  86. var result = await _orderController.BatchAuditDelay(req);
  87. sw.Stop();
  88. _testOutputHelper.WriteLine($"耗时:{sw.ElapsedMilliseconds}ms");
  89. _testOutputHelper.WriteLine(result);
  90. //var delay = await _orderDelayRepository.Queryable()
  91. // .Includes(d => d.Order)
  92. // .FirstAsync(d => d.Id == delayId);
  93. //Assert.Equal(EDelayState.Pass, delay.DelayState);
  94. //Assert.True(delay.Order.ExpiredTime > order.ExpiredTime);
  95. //Console.WriteLine(delay.Id);
  96. }
  97. [Fact]
  98. public void QueryWaitForApproveDelaysTest()
  99. {
  100. _testOutputHelper.WriteLine("123");
  101. }
  102. }
  103. }