SnapshotControllerTest.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using AutoFixture;
  2. using EasyCaching.Core;
  3. using Hotline.Api.Controllers;
  4. using Hotline.Api.Controllers.Snapshot;
  5. using Hotline.Identity.Accounts;
  6. using Hotline.Identity.Roles;
  7. using Hotline.Orders;
  8. using Hotline.Settings;
  9. using Hotline.Share.Dtos.Snapshot;
  10. using Hotline.Share.Enums.Snapshot;
  11. using Hotline.Share.Tools;
  12. using Hotline.Snapshot.IRepository;
  13. using Hotline.ThirdAccountDomainServices;
  14. using Hotline.ThirdAccountDomainServices.Interfaces;
  15. using Hotline.Users;
  16. using Microsoft.AspNetCore.Http;
  17. using Microsoft.AspNetCore.Mvc;
  18. using Microsoft.Extensions.DependencyInjection;
  19. using Shouldly;
  20. using System;
  21. using System.Collections.Generic;
  22. using System.Linq;
  23. using System.Text;
  24. using System.Threading.Tasks;
  25. using XF.Domain.Cache;
  26. using XF.Domain.Repository;
  27. namespace Hotline.Tests.Controller;
  28. public class SnapshotControllerTest : TestBase
  29. {
  30. private readonly SnapshotController _snapshotController;
  31. private readonly IOrderRepository _orderRepository;
  32. private readonly IOrderSnapshotRepository _orderSnapshotRepository;
  33. private readonly IIndustryRepository _industryRepository;
  34. private readonly IEasyCachingProvider _easyCaching;
  35. private readonly IRedisCachingProvider _redisCaching;
  36. public SnapshotControllerTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, IHttpContextAccessor httpContextAccessor, SnapshotController snapshotController, IOrderRepository orderRepository, IOrderSnapshotRepository orderSnapshotRepository, IIndustryRepository industryRepository, IThirdIdentiyService thirdService, IThirdAccountRepository thirdAccount, IEasyCachingProvider easyCaching, IRedisCachingProvider redisCaching, ITypedCache<SystemSetting> cacheSettingData, ThirdAccounSupplierFactory thirdAccountDomainFactory, IServiceProvider serviceProvider) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository, httpContextAccessor, thirdService, thirdAccount, cacheSettingData, thirdAccountDomainFactory, serviceProvider)
  37. {
  38. _snapshotController = snapshotController;
  39. _snapshotController.ControllerContext = new ControllerContext
  40. {
  41. HttpContext = new DefaultHttpContext()
  42. };
  43. _orderRepository = orderRepository;
  44. _orderSnapshotRepository = orderSnapshotRepository;
  45. _industryRepository = industryRepository;
  46. _easyCaching = easyCaching;
  47. _redisCaching = redisCaching;
  48. }
  49. [Fact]
  50. public async Task GetAreaTree_Test()
  51. {
  52. var result = await _snapshotController.GetAreaTreeAsync();
  53. result.ShouldNotBeNull();
  54. var zgs = result.Where(m => m.AreaName == "自贡市").FirstOrDefault();
  55. zgs.ShouldNotBeNull();
  56. var rx = zgs.Children.Where(m => m.AreaName == "荣县").FirstOrDefault();
  57. rx.ShouldNotBeNull();
  58. var zzz = rx.Children.Where(m => m.AreaName == "正紫镇").FirstOrDefault();
  59. zzz.ShouldNotBeNull();
  60. }
  61. /// <summary>
  62. /// 测试创建随手拍工单
  63. /// </summary>
  64. /// <returns></returns>
  65. [Fact]
  66. public async Task AddOrder_Test()
  67. {
  68. var cacheKey = "Hotline:CollectionJobType";
  69. await _easyCaching.RemoveAsync(cacheKey, CancellationToken.None);
  70. var exist = await _easyCaching.ExistsAsync(cacheKey);
  71. await _redisCaching.KeyDelAsync(cacheKey);
  72. var existRedis = await _redisCaching.KeyExistsAsync(cacheKey);
  73. var homePage = await _snapshotController.GetHomePageAsync();
  74. var industry = homePage.Industrys.Where(m => m.IndustryType == EIndustryType.Declare).FirstOrDefault();
  75. var pageBase = await _snapshotController.GetIndustryBaseAsync(industry.Id);
  76. var inDto = _fixture.Create<AddSnapshotOrderInDto>();
  77. inDto.Street = "单元测试街道" + DateTime.Now.ToLongDateTimeString();
  78. inDto.IndustryId = industry.Id;
  79. inDto.Town = "仙市镇";
  80. inDto.County = "沿滩区";
  81. inDto.Description = "单元测试添加的时间描述";
  82. inDto.IsSecret = false;
  83. inDto.JobType = 1;
  84. foreach (var item in inDto.Files)
  85. {
  86. item.FileName = DateTime.Now.ToShortTimeString() + "文件.doc";
  87. }
  88. var order = await _snapshotController.AddOrderAsync(inDto);
  89. var orderEntity = await _orderRepository.GetAsync(order.Id);
  90. orderEntity.ShouldNotBeNull();
  91. orderEntity.Latitude.ShouldBe(inDto.Latitude);
  92. orderEntity.Longitude.ShouldBe(inDto.Longitude);
  93. orderEntity.Title.ShouldNotBeNullOrEmpty();
  94. orderEntity.Content.ShouldNotBeNullOrEmpty();
  95. var orderSnapshotEntity = await _orderSnapshotRepository.GetAsync(order.Id);
  96. orderSnapshotEntity.ShouldNotBeNull();
  97. orderSnapshotEntity.JobType.ShouldBe(inDto.JobType);
  98. orderSnapshotEntity.JobTypeName.ShouldBe("气割");
  99. }
  100. }