using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Hua.Todo.Application.Common; using Hua.Todo.Application.Repositories; using Hua.Todo.Application.Services.CloudSync.Services; using Hua.Todo.HttpApi.AspNetCore.CloudSync.Services; using Xunit; namespace Hua.Todo.Host.Tests.CloudSync; /// /// 云同步核心服务 DI 注册集成测试。 /// 模拟 Host 的完整 DI 链路:AddApplicationServices + AddCloudSyncServer, /// 验证所有关键服务可被正确解析。 /// public class CloudSyncEndpointRegistrationTests : IDisposable { private readonly SqliteConnection _connection; private readonly ServiceProvider _provider; public CloudSyncEndpointRegistrationTests() { // 使用共享缓存的 SQLite 内存数据库 _connection = new SqliteConnection("Data Source=CloudSyncRegTests;Mode=Memory;Cache=Shared"); _connection.Open(); var services = new ServiceCollection(); services.AddLogging(); // 模拟 Host 的完整 DI 链路 services.AddApplicationServices("Data Source=CloudSyncRegTests;Mode=Memory;Cache=Shared"); services.AddCloudSyncServer(); _provider = services.BuildServiceProvider(); // 确保数据库表已创建 using var scope = _provider.CreateScope(); var db = scope.ServiceProvider.GetRequiredService(); db.Database.EnsureCreated(); } [Fact] public void ResolveCloudProbeService_ShouldSucceed() { var service = _provider.GetRequiredService(); Assert.NotNull(service); } [Fact] public void ResolveCloudAuthService_ShouldSucceed() { var service = _provider.GetRequiredService(); Assert.NotNull(service); } [Fact] public void ResolveCloudTaskSyncService_ShouldSucceed() { var service = _provider.GetRequiredService(); Assert.NotNull(service); } [Fact] public void ResolveSecurityPolicyService_ShouldSucceed() { var service = _provider.GetRequiredService(); Assert.NotNull(service); } [Fact] public void ResolveCloudAdminService_ShouldSucceed() { var service = _provider.GetRequiredService(); Assert.NotNull(service); } public void Dispose() { _provider.Dispose(); _connection.Dispose(); } }