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

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

        private SqliteConnection? Connection;

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

        [OneTimeTearDown]
        public async Task TeardownDatabase() {
            if (Connection == null) return;
            await AppDbContext.ExecuteEmbeddedScript(Connection, 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 void TeardownPrinting() {
            // no teardown needed yet
        }
    }
}