YiBinExpireTimeTest.cs 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using Hotline.Configurations;
  2. using Hotline.Orders;
  3. using Hotline.Settings;
  4. using Hotline.Settings.TimeLimitDomain;
  5. using Hotline.Share.Dtos.Settings;
  6. using Hotline.Share.Enums.FlowEngine;
  7. using Hotline.Share.Enums.Settings;
  8. using Hotline.Share.Tools;
  9. using Mapster;
  10. using Shouldly;
  11. using System;
  12. using System.Collections.Generic;
  13. using System.Linq;
  14. using System.Text;
  15. using System.Threading.Tasks;
  16. using XF.Domain.Repository;
  17. namespace Hotline.Application.Tests.Domain;
  18. public class YiBinExpireTimeTest
  19. {
  20. private readonly YiBinExpireTimeLimit _calcExpireTime;
  21. private readonly IRepository<Order> _orderRepository;
  22. private readonly IRepository<TimeLimitSetting> _timeLimitSettingRepository;
  23. public YiBinExpireTimeTest(YiBinExpireTimeLimit calcExpireTime, IRepository<Order> orderRepository, IRepository<TimeLimitSetting> timeLimitSettingRepository)
  24. {
  25. _calcExpireTime = calcExpireTime;
  26. _orderRepository = orderRepository;
  27. _timeLimitSettingRepository = timeLimitSettingRepository;
  28. }
  29. [Theory]
  30. [InlineData("2024-09-23 15:07:40", 5, "15", "2024-09-29 15:07:39", "5个工作日")]
  31. public async Task CalcEndTimeWorkDay_Test(string begin, int count, string busCode, string expiredTime, string timeText)
  32. {
  33. var beginTime = DateTime.Parse(begin);
  34. var result = await _calcExpireTime.CalcEndTime(beginTime,beginTime, ETimeType.WorkDay, count, busCode);
  35. result.ShouldNotBeNull();
  36. result.EndTime.ShouldBe(DateTime.Parse(expiredTime));
  37. }
  38. [Theory]
  39. [InlineData("2024-09-25 13:16:33", 5, "15", "2024-10-08 13:16:32", "5个工作日")]
  40. public async Task CalcEndTimeWorkDayDelay_Test(string begin, int count, string busCode, string expiredTime, string timeText)
  41. {
  42. var beginTime = DateTime.Parse(begin);
  43. var result = await _calcExpireTime.CalcEndTime(beginTime,beginTime, ETimeType.WorkDay, count, 0, 0);
  44. result.ShouldNotBeNull();
  45. result.EndTime.ShouldBe(DateTime.Parse(expiredTime));
  46. }
  47. [Theory]
  48. [InlineData("2024-09-04 14:00:00", 2, "10", "2024-09-06 13:59:59", "2024/9/6 10:24:00", "2024/9/5 14:00:00", "2个工作日")]
  49. [InlineData("2024-09-04 14:01:01", 3, "10", "2024-09-09 14:01:00", "2024/9/6 17:37:01", "2024/9/6 9:31:01", "3个工作日")]
  50. public async Task CalcEndTime_Test(string begin, int count, string busCode, string expiredTime, string nearlyExpiredTime, string nearlyExpiredTimeOne, string timeText)
  51. {
  52. var beginTime = DateTime.Parse(begin);
  53. var result = await _calcExpireTime.CalcEndTime(beginTime,beginTime, new TimeConfig(count, ETimeType.WorkDay), busCode);
  54. result.ShouldNotBeNull();
  55. result.ExpiredTime.ShouldBe(DateTime.Parse(expiredTime));
  56. result.NearlyExpiredTime.ShouldBe(DateTime.Parse(nearlyExpiredTime));
  57. result.NearlyExpiredTimeOne.ShouldBe(DateTime.Parse(nearlyExpiredTimeOne));
  58. result.Count.ShouldBe(count);
  59. result.TimeText.ShouldBe(timeText);
  60. }
  61. [Theory]
  62. [InlineData("2024-09-04 14:00:00", "CenterToOrg", true, "2024-09-05 14:00:00")]
  63. [InlineData("2024-10-03 09:23:46", "CenterToCenter", false, "2024-10-12 18:00:00")]
  64. public async Task CalcExpiredTime_Test(string beginTxt, string flowTxt, bool is24Hour , string expected)
  65. {
  66. var beginTime = DateTime.Parse(beginTxt);
  67. Enum.TryParse(flowTxt, out EFlowDirection flow);
  68. var inDto = new OrderTimeClacInfo
  69. {
  70. Is24HoursComplete = is24Hour,
  71. FlowDirection = flow,
  72. AcceptTypeCode = "20"
  73. };
  74. var time = await _calcExpireTime.CalcExpiredTime(beginTime,beginTime, flow,inDto);
  75. time.ShouldNotBeNull();
  76. time.ExpiredTime.ShouldBe(DateTime.Parse(expected));
  77. }
  78. }