qinchaoyue 5 сар өмнө
parent
commit
9b4869c566

+ 21 - 2
src/Hotline.Application.Tests/Controller/OrderControllerTest.cs

@@ -2,8 +2,10 @@
 using Castle.DynamicProxy;
 using Hotline.Api.Controllers;
 using Hotline.Application.CallCenter;
+using Hotline.Application.Tests.Dto;
 using Hotline.Application.Tests.Infrastructure;
 using Hotline.Application.Tests.Mock;
+using Hotline.Application.Tests.SqlSuger;
 using Hotline.Caching.Interfaces;
 using Hotline.Caching.Services;
 using Hotline.CallCenter.Calls;
@@ -12,12 +14,14 @@ using Hotline.FlowEngine.WorkflowModules;
 using Hotline.Identity.Accounts;
 using Hotline.Identity.Roles;
 using Hotline.Orders;
+using Hotline.Repository.SqlSugar;
 using Hotline.Settings;
 using Hotline.Settings.Hotspots;
 using Hotline.Share.Dtos.File;
 using Hotline.Share.Dtos.FlowEngine;
 using Hotline.Share.Dtos.Order;
 using Hotline.Share.Dtos.Order.Publish;
+using Hotline.Share.Dtos.TrCallCenter;
 using Hotline.Share.Dtos.Users;
 using Hotline.Share.Enums.CallCenter;
 using Hotline.Share.Enums.FlowEngine;
@@ -32,6 +36,7 @@ using Microsoft.AspNetCore.Mvc.Testing;
 using Microsoft.Extensions.DependencyInjection;
 using Moq;
 using Shouldly;
+using SqlSugar;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -57,8 +62,9 @@ public class OrderControllerTest : TestBase
     private readonly IRepository<CallNative> _callNativeRepository; 
     private readonly IRepository<CallidRelation> _callIdRelationRepository;
     private readonly XingTangCallApplication _defaultCallApplication;
+    private readonly ISqlSugarClient _capSqlClient;
 
-    public OrderControllerTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IRepository<Hotspot> hotspotRepository, OrderController orderController, IOrderRepository orderRepository, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, OrderServiceMock orderServiceMock, IRepository<OrderPublish> orderPublishRepository, INotificationHandler<EndWorkflowNotify> orderPublishEndWorkflowHandler, IOrderVisitRepository orderVisitRepository, IRepository<SystemSetting> systemSettingRepository, ISystemSettingCacheManager systemSettingCacheManager, IRepository<CallNative> callNativeRepository, IRepository<CallidRelation> callIdRelationRepository, XingTangCallApplication defaultCallApplication) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository)
+    public OrderControllerTest(IAccountRepository accountRepository, IRepository<Role> roleRepository, UserController userController, IRepository<Hotspot> hotspotRepository, OrderController orderController, IOrderRepository orderRepository, IServiceScopeFactory scopeFactory, IRepository<User> userRepository, OrderServiceMock orderServiceMock, IRepository<OrderPublish> orderPublishRepository, INotificationHandler<EndWorkflowNotify> orderPublishEndWorkflowHandler, IOrderVisitRepository orderVisitRepository, IRepository<SystemSetting> systemSettingRepository, ISystemSettingCacheManager systemSettingCacheManager, IRepository<CallNative> callNativeRepository, IRepository<CallidRelation> callIdRelationRepository, XingTangCallApplication defaultCallApplication, ISugarUnitOfWork<CapDbContext> capDbContext) : base(accountRepository, roleRepository, userController, scopeFactory, userRepository)
     {
         _hotspotRepository = hotspotRepository;
         _orderController = orderController;
@@ -76,11 +82,14 @@ public class OrderControllerTest : TestBase
         _callNativeRepository = callNativeRepository;
         _callIdRelationRepository = callIdRelationRepository;
         _defaultCallApplication = defaultCallApplication;
+        _capSqlClient = capDbContext.Db;
     }
 
     /// <summary>
-    /// 创建工单时传入一个错误callId,
+    /// 创建工单时传入一个错误callId
+    /// 验证: 
     /// 测试在延迟消息后会不会把工单测CallId修复成正确的CallId
+    /// 推送的省上数据是否正确
     /// </summary>
     /// <returns></returns>
     [Fact]
@@ -116,6 +125,16 @@ public class OrderControllerTest : TestBase
         var orderEntity = await _orderRepository.GetAsync(order.Id);
         orderEntity.ShouldNotBeNull();
         orderEntity.CallId.ShouldBe(inDto.Id);
+        var query = _capSqlClient.Queryable<PublishedEntity>()
+            .Where(m => m.Name == "hotline.call.connect.order" && m.Content.Contains(order.Id));
+        var sql = query.ToSqlString();
+        sql.Contains("id").ShouldBeFalse("字段大小写错误" + sql);
+        var published = await query.FirstAsync();
+        published.ShouldNotBeNull("推送数据不存在");
+        var message = published.Content.FromJson<Message<PublishCallRecrodDto>>();
+        message.Value.Order.ShouldNotBeNull("推送的工单信息为空");
+        message.Value.Order.ProvinceNo.ShouldNotBeNull("省工单编号不能为空");
+        message.Value.Order.No.ShouldBe(order.No, "推送的工单编号错误");
     }
 
     /// <summary>

+ 30 - 0
src/Hotline.Application.Tests/Dto/CapDto.cs

@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Hotline.Application.Tests.Dto;
+public class CapDto
+{
+}
+
+public class Message<T>
+{
+    public Headers Headers { get; set; }
+    public T Value { get; set; }
+}
+
+public class Headers
+{
+    public string CapCallbackName { get; set; }
+    public string CapMsgId { get; set; }
+    public string CapCorrId { get; set; }
+    public string CapCorrSeq { get; set; }
+    public string CapMsgName { get; set; }
+    public string CapMsgType { get; set; }
+    public string CapDelayTime { get; set; }
+    public string CapSentTime { get; set; }
+    public string CapMsgGroup { get; set; }
+    public string CapExecInstanceId { get; set; }
+}   

+ 17 - 0
src/Hotline.Application.Tests/Dto/PublishedEntity.cs

@@ -0,0 +1,17 @@
+using SqlSugar;
+using System;
+
+namespace Hotline.Application.Tests.Dto;
+[SugarTable("published")]
+public class PublishedEntity
+{
+    [SugarColumn(IsPrimaryKey = true)]
+    public long Id { get; set; }
+    public string Version { get; set; }
+    public string Name { get; set; }
+    public string Content { get; set; }
+    public int Retries { get; set; }
+    public DateTime Added { get; set; }
+    public DateTime? ExpiresAt { get; set; }
+    public string StatusName { get; set; }
+}

+ 11 - 0
src/Hotline.Application.Tests/SqlSuger/CapDbContext.cs

@@ -0,0 +1,11 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Hotline.Application.Tests.SqlSuger;
+public class CapDbContext : SugarUnitOfWork
+{
+}

+ 9 - 19
src/Hotline.Application.Tests/SqlSuger/CapDbExtensions.cs

@@ -14,30 +14,20 @@ public static class CAPDbExtensions
 {
     public static IServiceCollection AddCAPDb(this IServiceCollection services, IConfiguration configuration)
     {
-        var c = configuration.GetConnectionString("CAP");
-        SqlSugarScope sqlSugar = new SqlSugarScope(new ConnectionConfig()
-        {
+        SqlSugarScope sqlSugar = new(new ConnectionConfig() 
+        { 
             DbType = DbType.PostgreSQL,
             ConnectionString = configuration.GetConnectionString("CAP"),
             IsAutoCloseConnection = true,
-            //ConfigureExternalServices = new ConfigureExternalServices()
-            //{
-            //    EntityService = (x, p) => //处理列名
-            //    {
-            //        p.DbColumnName = string.IsNullOrEmpty(p.DbColumnName) ? p.DbColumnName : p.DbColumnName.ToLower(); 
-            //        //UtilMethods.ToUnderLine(p.DbColumnName);//ToUnderLine驼峰转下划线方法
-            //    },
-            //    EntityNameService = (x, p) => //处理表名
-            //    {
-            //    }
-            //}
-        },
-             db => { }
-         );
+            InitKeyType = InitKeyType.Attribute,
+            MoreSettings = new ConnMoreSettings()
+            {
+                PgSqlIsAutoToLower = false
+            }
+        });
 
-        ISugarUnitOfWork<XingTangDbContext> context = new SugarUnitOfWork<XingTangDbContext>(sqlSugar);
+        ISugarUnitOfWork<CapDbContext> context = new SugarUnitOfWork<CapDbContext>(sqlSugar);
         services.AddSingleton(context);
-
         return services;
     }
 }

+ 2 - 2
src/Hotline.Application.Tests/appsettings.Development.json

@@ -59,8 +59,8 @@
         }
     },
     "ConnectionStrings": {
-         "Hotline": "PORT=5432;DATABASE=hotline_dev;HOST=110.188.24.182;PASSWORD=fengwo11!!;USER ID=dev;",
-         "CAP": "PORT=5432;DATABASE=fwmq;HOST=110.188.24.182;PASSWORD=fengwo11!!;USER ID=dev;"
+        "Hotline": "PORT=5432;DATABASE=hotline_dev;HOST=110.188.24.182;PASSWORD=fengwo11!!;USER ID=dev;",
+        "CAP": "PORT=5432;DATABASE=fwmq;HOST=110.188.24.182;PASSWORD=fengwo11!!;USER ID=dev;Search Path=cap"
         //"Hotline": "PORT=5432;DATABASE=hotline;HOST=110.188.24.182;PASSWORD=fengwo11!!;USER ID=dev;"
     },
     "Cache": {