PushMessageControllerTest.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using Hotline.Api.Controllers;
  2. using Hotline.Share.Dtos.Push;
  3. using Hotline.Users;
  4. using Microsoft.AspNetCore.Http;
  5. using Microsoft.AspNetCore.Mvc;
  6. using Shouldly;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using XF.Domain.Exceptions;
  13. using XF.Domain.Repository;
  14. namespace Hotline.Application.Tests.Controller;
  15. public class PushMessageControllerTest
  16. {
  17. private readonly PushMessageController _pushMessageController;
  18. private readonly IRepository<User> _userRepository;
  19. public PushMessageControllerTest(PushMessageController pushMessageController, IRepository<User> userRepository)
  20. {
  21. _pushMessageController = pushMessageController;
  22. pushMessageController.ControllerContext = new ControllerContext
  23. {
  24. HttpContext = new DefaultHttpContext()
  25. };
  26. _userRepository = userRepository;
  27. }
  28. //[Fact]
  29. public async Task SendMessage_Test()
  30. {
  31. try
  32. {
  33. await _pushMessageController.SendMessage(new MessageInDto { Content = "123"});
  34. }
  35. catch (UserFriendlyException e)
  36. {
  37. e.Message.ShouldBe("电话号码和用户Id不能同时为空");
  38. }
  39. try
  40. {
  41. await _pushMessageController.SendMessage(new MessageInDto());
  42. }
  43. catch (UserFriendlyException e)
  44. {
  45. e.Message.ShouldBe("内容不能为空");
  46. }
  47. var phoneNo = await _userRepository.Queryable()
  48. .Where(m => m.Name.Contains("测试账号"))
  49. .Select(m => m.PhoneNo)
  50. .FirstAsync();
  51. var inDto = new MessageInDto
  52. {
  53. TelNumbers = phoneNo,
  54. Content = "单元测试, 输入的手机号码发送的短信"
  55. };
  56. // await _pushMessageController.SendMessage(inDto);
  57. var ids = await _userRepository.Queryable()
  58. .Where(m => m.Name.Contains("测试账号"))
  59. .Select(m => m.Id)
  60. .Take(2)
  61. .ToListAsync();
  62. inDto = new MessageInDto
  63. {
  64. UserIds = ids,
  65. Content = "单元测试, 选择的联系人发送的短信"
  66. };
  67. await _pushMessageController.SendMessage(inDto);
  68. }
  69. }