KnowApplicationTest.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. using Hotline.Api.Controllers;
  2. using Hotline.Application.Knowledge;
  3. using Hotline.Identity.Accounts;
  4. using Hotline.Identity.Roles;
  5. using Hotline.KnowledgeBase;
  6. using Hotline.Share.Dtos.Knowledge;
  7. using Hotline.Share.Tools;
  8. using Hotline.Snapshot.Interfaces;
  9. using Hotline.Users;
  10. using Mapster;
  11. using MediatR;
  12. using Microsoft.AspNetCore.Http;
  13. using Microsoft.Extensions.DependencyInjection;
  14. using Shouldly;
  15. using XF.Domain.Repository;
  16. namespace Hotline.Tests.Application;
  17. public class KnowApplicationTest : TestBase
  18. {
  19. private readonly IKnowApplication _knowApplication;
  20. private readonly IMediator _mediator;
  21. private readonly IRepository<KnowledgeBase.Knowledge> _knowledgeRepository;
  22. private readonly IKnowledgeDomainService _knowledgeDomainService;
  23. private readonly IRepository<KnowledgeWord> _knowledgeWordRepository;
  24. private readonly IRepository<KnowledgeHotWord> _knowledgeHotWordRepository;
  25. public KnowApplicationTest(IAccountRepository accountRepository, IRepository<Role> roleRepository,
  26. UserController userController, IServiceScopeFactory scopeFactory,
  27. IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor,
  28. IKnowApplication knowApplication, IMediator mediator, IRepository<KnowledgeBase.Knowledge> knowledgeRepository,
  29. IKnowledgeDomainService knowledgeDomainService, IRepository<KnowledgeWord> knowledgeWordRepository,
  30. IRepository<KnowledgeHotWord> knowledgeHotWordRepository, IThirdIdentiyService thirdService, IThirdAccountRepository thirdAccount)
  31. : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService, thirdAccount)
  32. {
  33. _knowApplication = knowApplication;
  34. _mediator = mediator;
  35. _knowledgeRepository = knowledgeRepository;
  36. _knowledgeDomainService = knowledgeDomainService;
  37. _knowledgeWordRepository = knowledgeWordRepository;
  38. _knowledgeHotWordRepository = knowledgeHotWordRepository;
  39. }
  40. [Fact]
  41. public async Task TitleParticiple_Test()
  42. {
  43. var result = await _knowApplication.TitleParticiple("短信回访的相关解释口径、规范用语");
  44. result.ShouldNotBeNull();
  45. }
  46. [Fact]
  47. public void SplitKeywords_Test()
  48. {
  49. var keywords = "短信 筷子, 天才, 脑洞, 大开";
  50. var items = keywords.SplitKeywords();
  51. items.Count.ShouldBe(5);
  52. items[0] = "短信";
  53. items[1] = "筷子";
  54. items[2] = "天才";
  55. items[3] = "脑洞";
  56. items[4] = "大开";
  57. }
  58. //[Fact]
  59. public async Task GetPageViewList_Test()
  60. {
  61. //var r = await _knowledgeRelationTypeRepository.Queryable()
  62. // .OrderByDescending(m => m.CreationTime)
  63. // .FirstAsync();
  64. //var knowledge = await _knowledgeRepository.GetAsync(r.KnowledgeId);
  65. //await _knowledgeDomainService.KnowledgePvIncreaseAsync(knowledge, new CancellationToken());
  66. //var inDto = new PageViewInDto
  67. //{
  68. // KnowledgeTypeId = r.KnowledgeTypeId
  69. //};
  70. //var (total, items) = await _knowApplication.GetPageViewListAsync(inDto);
  71. //total.ShouldNotBe(0);
  72. }
  73. [Fact]
  74. public async Task UpdateKnowledgeWord_Test()
  75. {
  76. var entity = await _knowledgeHotWordRepository.Queryable()
  77. .OrderByDescending(m => m.CreationTime)
  78. .FirstAsync();
  79. entity.KeyWord = "单元测试修改";
  80. var inDto = entity.Adapt<UpdateKnowledgeHotWordInDto>();
  81. await _knowApplication.UpdateKnowledgeHotWordAsync(inDto);
  82. var updateEntity = await _knowledgeHotWordRepository.GetAsync(entity.Id);
  83. updateEntity.KeyWord.ShouldBe(entity.KeyWord);
  84. }
  85. [Fact]
  86. public async Task AddKnowledgeHotWord_Test()
  87. {
  88. var addDto = new AddKnowledgeHotWordInDto
  89. {
  90. KeyWord = "单元测试" + new Random().Next(1, 100),
  91. };
  92. await _knowApplication.AddKnowledgeHotWordAsync(addDto);
  93. try
  94. {
  95. await _knowApplication.AddKnowledgeHotWordAsync(addDto);
  96. }
  97. catch (Exception e)
  98. {
  99. e.Message.ShouldBe("热词已存在");
  100. }
  101. }
  102. /// <summary>
  103. /// 测试扩展方法是否能正确判断集合空和非空的情况
  104. /// </summary>
  105. [Fact]
  106. public void ListEx_Test()
  107. {
  108. List<string> a = null;
  109. a.IsNullOrEmpty().ShouldBeTrue();
  110. a.NotNullOrEmpty().ShouldBeFalse();
  111. a = new List<string>();
  112. a.IsNullOrEmpty().ShouldBeTrue();
  113. a.NotNullOrEmpty().ShouldBeFalse();
  114. }
  115. }