public void TestOpen()
        {
            DatabaseSettings settings = TestConfigurationHelper.GetDatabaseSettings(TestContext.CurrentContext.TestDirectory);;

            using IDbConnection cn = new DatabaseManager(settings).Open();
            Assert.IsNotNull(cn);
            Assert.IsTrue(cn.State == ConnectionState.Open);
        }
        public void Initialize()
        {
            CsvImportSettings = TestConfigurationHelper.GetCsvImportSettings(TestContext.CurrentContext.TestDirectory);
            DatabaseSettings  = TestConfigurationHelper.GetDatabaseSettings(TestContext.CurrentContext.TestDirectory);

            ServiceCollection services = new ServiceCollection();

            services.AddSingleton <DatabaseSettings>(s => DatabaseSettings);
            services.AddSingleton <CsvImportSettings>(s => CsvImportSettings);
            services.AddTransient <IDatabaseManager, DatabaseManager>();
            services.AddTransient <IFileDownloadUtilities, FileDownloadUtilities>();
            services.AddTransient <IZipUtility, ZipUtility>();
            services.AddTransient <IBulkImportRepository <Cfda>, CfdaRepository>();
            services.AddTransient <IBulkImportRepository <General>, GeneralRepository>();
            services.AddTransient <IBulkImportRepository <Agency>, AgencyRepository>();
            services.AddTransient <IBulkImportRepository <CapText>, CapTextRepository>();
            services.AddTransient <IBulkImportRepository <Cpa>, CpaRepository>();
            services.AddTransient <IBulkImportRepository <Dun>, DunRepository>();
            services.AddTransient <IBulkImportRepository <Ein>, EinRepository>();
            services.AddTransient <IBulkImportRepository <Finding>, FindingRepository>();
            services.AddTransient <IBulkImportRepository <Passthrough>, PassthroughRepository>();
            services.AddTransient <IBulkImportRepository <FindingText>, FindingTextRepository>();
            services.AddTransient <IBulkImportRepository <FormattedCapText>, FormattedCapTextRepository>();
            services.AddTransient <IBulkImportRepository <FormattedFindingsText>, FormattedFindingTextRepository>();
            services.AddTransient <IImporter <Cfda>, CfdaCsvImporter>();
            services.AddTransient <IImporter <General>, GeneralCsvImporter>();
            services.AddTransient <IImporter <Agency>, AgencyCsvImporter>();
            services.AddTransient <IImporter <CapText>, CapTextCsvImporter>();
            services.AddTransient <IImporter <Cpa>, CpaCsvImporter>();
            services.AddTransient <IImporter <Dun>, DunCsvImporter>();
            services.AddTransient <IImporter <Ein>, EinCsvImporter>();
            services.AddTransient <IImporter <Finding>, FindingCsvImporter>();
            services.AddTransient <IImporter <FindingText>, FindingTextCsvImporter>();
            services.AddTransient <IImporter <FormattedCapText>, FormattedCapTextImporter>();
            services.AddTransient <IImporter <FormattedFindingsText>, FormattedFindingTextCsvImporter>();
            services.AddTransient <IImporter <Passthrough>, PassthroughCsvImporter>();
            services.AddTransient <IImportManager, CsvImportManager>();


            ServiceProvider = services.BuildServiceProvider();
        }
        public async Task TestDataImportWorkflow()
        {
            DatabaseSettings settings        = TestConfigurationHelper.GetDatabaseSettings(TestContext.CurrentContext.TestDirectory);;
            IDatabaseManager databaseManager = new DatabaseManager(settings);

            IBulkImportRepository <Cfda> cfdaRepository = new CfdaRepository(databaseManager);

            await cfdaRepository.Clean();

            Assert.IsTrue(await cfdaRepository.CurrentRecords() == 0);

            IList <Cfda> records = new List <Cfda>();

            records.Add(new Cfda()
            {
                Audityear = "1997"
            });
            records.Add(new Cfda()
            {
                Audityear = "1998"
            });
            records.Add(new Cfda()
            {
                Audityear = "1999"
            });
            records.Add(new Cfda()
            {
                Audityear = "2000"
            });
            records.Add(new Cfda()
            {
                Audityear = "2001"
            });
            records.Add(new Cfda()
            {
                Audityear = "2002"
            });
            records.Add(new Cfda()
            {
                Audityear = "2003"
            });
            records.Add(new Cfda()
            {
                Audityear = "2004"
            });
            records.Add(new Cfda()
            {
                Audityear = "2005"
            });
            records.Add(new Cfda()
            {
                Audityear = "2006"
            });
            records.Add(new Cfda()
            {
                Audityear = "2007"
            });
            records.Add(new Cfda()
            {
                Audityear = "2008"
            });
            records.Add(new Cfda()
            {
                Audityear = "2009"
            });
            records.Add(new Cfda()
            {
                Audityear = "2010"
            });
            records.Add(new Cfda()
            {
                Audityear = "2011"
            });
            records.Add(new Cfda()
            {
                Audityear = "2012"
            });
            records.Add(new Cfda()
            {
                Audityear = "2013"
            });
            records.Add(new Cfda()
            {
                Audityear = "2014"
            });
            records.Add(new Cfda()
            {
                Audityear = "2015"
            });
            records.Add(new Cfda()
            {
                Audityear = "2016"
            });
            records.Add(new Cfda()
            {
                Audityear = "2017"
            });
            records.Add(new Cfda()
            {
                Audityear = "2018"
            });
            records.Add(new Cfda()
            {
                Audityear = "2019"
            });
            records.Add(new Cfda()
            {
                Audityear = "2020"
            });

            Assert.Greater(await cfdaRepository.BulkImport(records), 0);

            Assert.Greater(await cfdaRepository.CurrentRecords(), 0);

            await cfdaRepository.Clean();

            Assert.IsTrue(await cfdaRepository.CurrentRecords() == 0);
        }