using Elwig.Helpers;
using System.Reflection;
using Microsoft.Data.Sqlite;
using Elwig.Helpers.Printing;

namespace Tests.UnitTests.DocumentTests {
    [SetUpFixture]
    public class Setup {

        private SqliteConnection? Connection;

        [OneTimeSetUp]
        public async Task SetupDatabase() {
            Connection = await AppDbContext.ConnectAsync();
            await Connection.ExecuteEmbeddedScript(Assembly.GetExecutingAssembly(), "Tests.Resources.Sql.DocumentInsert.sql");
        }

        [OneTimeTearDown]
        public async Task TeardownDatabase() {
            if (Connection == null) return;
            await Connection.ExecuteEmbeddedScript(Assembly.GetExecutingAssembly(), "Tests.Resources.Sql.DocumentDelete.sql");
            await Connection.DisposeAsync();
            Connection = null;
        }

        [OneTimeSetUp]
        public async Task SetupPrinting() {
            await Html.Init();
            await Pdf.Init();
        }

        [OneTimeTearDown]
        public async Task TeardownPrinting() {
            await Pdf.Cleanup();
        }
    }
}
