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();
}
}