using Dapper; using YLErp.Modules.UnderlyingModule; namespace YLErp.UnitTestProject.Modules.UnderlyingModule { /// /// 基金管理人取数(bigdata 数据源)连通性与库名插值验证(连 96 测试库): /// - DbSchema.Of 从连接串解析物理库名(glms_bigdata),SQL 不再硬编码库名、跨环境库名不同也能命中; /// - Lookup 全链路(连接 96 → 插值 SQL 执行 → 结果归并)不返回 Unavailable 即为连通且 SQL 有效。 /// [TestClass] public class FundManagerLookupServiceTest { [TestMethod] public void DbSchema_从连接串解析物理库名() { Assert.AreEqual("`glms_bigdata`", DbSchema.Of("bigdata")); Assert.AreEqual("`glms_yltrs_ylcms`", DbSchema.Of("ylcms")); } [TestMethod] public void Lookup_连接96大数据库_非降级() { var service = new FundManagerLookupService(); //96 库现有测试数据 161210/630006/511160(SECUCODE 无后缀,与去后缀匹配逻辑一致),用库存代码验证全链路命中 foreach (var code in new[] { "511160.SH", "161210.SZ", "630006.SH" }) { var result = service.Lookup(code); Console.WriteLine($"code={code} → Status={result.Status}, InvestAdvisorName={result.InvestAdvisorName}"); Assert.AreNotEqual(FundManagerLookupStatus.Unavailable, result.Status, $"code={code} 返回 Unavailable:96 bigdata 库不可达或插值 SQL 执行失败"); } } [TestMethod] public void Diag_查看库存secucode样例与行数() { using var connection = new MySqlConnector.MySqlConnection(AppManager.GetConnectionString("bigdata")); var count = connection.ExecuteScalar($"SELECT COUNT(*) FROM {DbSchema.Of("bigdata")}.mf_fundarchives"); var samples = connection.Query($"SELECT SECUCODE FROM {DbSchema.Of("bigdata")}.mf_fundarchives LIMIT 8"); Console.WriteLine($"mf_fundarchives 行数={count}, SECUCODE样例=[{string.Join(",", samples)}]"); var advCount = connection.ExecuteScalar($"SELECT COUNT(*) FROM {DbSchema.Of("bigdata")}.mf_investadvisoroutline"); Console.WriteLine($"mf_investadvisoroutline 行数={advCount}"); } } }