YiBinExpireTimeTest.cs 3.5 KB

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