RedPackApplicationTest.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. using Hotline.Api.Controllers;
  2. using Hotline.Application.Snapshot;
  3. using Hotline.Identity.Accounts;
  4. using Hotline.Identity.Roles;
  5. using Hotline.Settings;
  6. using Hotline.Share.Dtos.Snapshot;
  7. using Hotline.Share.Enums.Snapshot;
  8. using Hotline.Snapshot.Interfaces;
  9. using Hotline.Users;
  10. using Microsoft.AspNetCore.Http;
  11. using Microsoft.Extensions.DependencyInjection;
  12. using Shouldly;
  13. using SqlSugar;
  14. using System;
  15. using System.Collections.Generic;
  16. using System.Linq;
  17. using System.Text;
  18. using System.Threading.Tasks;
  19. using XF.Domain.Cache;
  20. using XF.Domain.Repository;
  21. namespace Hotline.Application.Tests.Application;
  22. public class RedPackApplicationTest : TestBase
  23. {
  24. private readonly IRedPackApplication _redPackApplication;
  25. private readonly IRedPackRecordRepository _redPackRecordRepository;
  26. public RedPackApplicationTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, IThirdIdentiyService thirdIdentiyService, IThirdAccountRepository thirdAccountRepository, IRedPackApplication redPackApplication, IRedPackRecordRepository redPackRecordRepository, ITypedCache<SystemSetting> cacheSettingData) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdIdentiyService, thirdAccountRepository, cacheSettingData)
  27. {
  28. _redPackApplication = redPackApplication;
  29. _redPackRecordRepository = redPackRecordRepository;
  30. }
  31. /// <summary>
  32. /// 获取特殊红包集合
  33. /// </summary>
  34. /// <returns></returns>
  35. [Fact]
  36. public async Task GetRedPackSpecialAuditItems_Test()
  37. {
  38. var items = await _redPackApplication.GetRedPackSpecialAuditItems(new SnapshotOrderAuditItemsInDto(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 0)).ToListAsync();
  39. items.Count.ShouldNotBe(0);
  40. }
  41. /// <summary>
  42. /// 获取审核集合
  43. /// 获取审核短信模板
  44. /// 审核通过
  45. /// 获取红包记录
  46. /// </summary>
  47. /// <returns></returns>
  48. [Fact]
  49. public async Task AuditRedPackAudit_Test()
  50. {
  51. var items = await _redPackApplication.GetRedPackAuditItems(new SnapshotOrderAuditItemsInDto(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 0)).ToListAsync();
  52. var audit = items.First();
  53. var smsTemplate = await _redPackApplication.GetRedPackAuditSMSTemplateAsync(new GetRedPackAuditSMSTemplateInDto(audit.OrderId, ESnapshotSMSStatus.Agree));
  54. var inDto = new UpdateRedPackAuditInDto
  55. {
  56. Status = ESnapshotSMSStatus.Agree,
  57. Opinion = "单元测试" + DateTime.Now.ToShortDateString(),
  58. SMSTemplateId = smsTemplate.First().Id,
  59. IsSendSms = true,
  60. RedPackAuditId = audit.Id,
  61. };
  62. await _redPackApplication.AuditRedPackAuditAsync(inDto);
  63. var suInDto = new UpdateRedPackRecordInDto
  64. {
  65. RedPackAuditId = audit.Id,
  66. Name = "单元测试Name",
  67. BankCardNo = "单元测试银行号",
  68. OpenBank = "单元测试开户行",
  69. ReplenishAmount = 100.01,
  70. ReplenishTime = DateTime.Now,
  71. ReplenishRemark = "单元测试补发备注",
  72. IsSendSMS = false,
  73. ReplenishType = "%15",
  74. ReplenishTypeId = "1",
  75. };
  76. await _redPackApplication.UpdateRedPackRecordAsync(suInDto);
  77. items = await _redPackApplication.GetRedPackAuditItems(new SnapshotOrderAuditItemsInDto(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 1)).ToListAsync();
  78. items.Any(m => m.Id == audit.Id).ShouldBeTrue();
  79. var record = await _redPackRecordRepository.Queryable()
  80. .Where(m => m.OrderId == audit.OrderId)
  81. .FirstAsync();
  82. record.ShouldNotBeNull();
  83. var recordItems = await _redPackApplication.GetRedPackRecordItems(new SnapshotRedPackRecordItemsInDto { Status =2}).ToListAsync();
  84. recordItems.Count.ShouldNotBe(0);
  85. var redPackRecord = recordItems.First();
  86. var redPackRecordEntity = await _redPackRecordRepository.GetAsync(redPackRecord.Id);
  87. redPackRecordEntity.PickupStatus = ERedPackPickupStatus.Received;
  88. redPackRecordEntity.DistributionState = EReadPackSendStatus.Successful;
  89. redPackRecordEntity.ReceiveTime = DateTime.Now;
  90. await _redPackRecordRepository.UpdateAsync(redPackRecordEntity);
  91. var sendRecordItems = await _redPackApplication.GetRedPackRecordDetail(new SnapshotRedPackRecordSendInDto
  92. {
  93. IsReceive = true,
  94. }).ToListAsync();
  95. sendRecordItems.Count.ShouldNotBe(0);
  96. }
  97. }