using Kompas.Mcp.Core.Documents;

namespace Kompas.Mcp.Tests.Integration;

/// <summary>
/// Базовый класс интеграционных тестов: после КАЖДОГО теста закрывает все открытые документы
/// КОМПАС без сохранения, чтобы не копились вкладки-пустышки (и чтобы упавший Assert не оставлял
/// открытый документ). xUnit создаёт новый экземпляр тест-класса на каждый тест-метод, поэтому
/// <see cref="DisposeAsync"/> вызывается per-test — это и есть точка очистки.
/// </summary>
public abstract class IntegrationTestBase : IAsyncLifetime
{
    private readonly DocumentService _cleanupDocs;

    protected IntegrationTestBase(KompasFixture fx)
        => _cleanupDocs = new DocumentService(fx.Session, fx.Dispatcher);

    public Task InitializeAsync() => Task.CompletedTask;

    public Task DisposeAsync() => _cleanupDocs.CloseAllAsync();
}
