using Microsoft.Extensions.DependencyInjection;
using DD.Persistence.Database;
using DD.Persistence.Database.Model;
using Xunit;

namespace DD.Persistence.IntegrationTests;
public abstract class BaseIntegrationTest : IClassFixture<WebAppFactoryFixture>, IDisposable
{
    protected readonly IServiceScope scope;

    protected readonly PersistenceDbContext dbContext;

    protected BaseIntegrationTest(WebAppFactoryFixture factory)
    {
        scope = factory.Services.CreateScope();

        dbContext = scope.ServiceProvider.GetRequiredService<PersistencePostgresContext>();
    }

    public void Dispose()
    {
        scope.Dispose();
        dbContext.Dispose();
        GC.SuppressFinalize(this);
    }
}