Example #1
0
        public override bool CompareTargetDataToDb(string key, string fileName = null, Table tableData = null,
                                                   TestDataResultOperationType operationType = default)
        {
            var featureTestData = GenerateDataFromTable(tableData);
            var fileTestData    = GenerateDataFromFile(fileName, key);
            var allBreaks       = _breakRepository.GetAll().ToList();

            switch (operationType)
            {
            case TestDataResultOperationType.Add:
            {
                featureTestData.AddRange(fileTestData);
                if (allBreaks.Count != featureTestData.Count)
                {
                    return(false);
                }

                foreach (var entity in featureTestData)
                {
                    if (allBreaks.Count(c => c.ExternalBreakRef == entity.ExternalBreakRef) != 1)
                    {
                        return(false);
                    }

                    var storedBreak = allBreaks.FirstOrDefault(c => c.ExternalBreakRef == entity.ExternalBreakRef);
                    if (!CompareBreak(entity, storedBreak))
                    {
                        return(false);
                    }
                }

                var resultSchedules = TestDataImporter.GetDataFromFile <Schedule>(fileName, "Schedules").ToList();
                var allSchedules    = _scheduleRepository.GetAll().ToList();
                if (allSchedules.Count != resultSchedules.Count)
                {
                    return(false);
                }

                foreach (var schedule in resultSchedules)
                {
                    var storedSchedule = allSchedules.FirstOrDefault(c => c.SalesArea == schedule.SalesArea && c.Date == schedule.Date);
                    var storedRefs     = storedSchedule.Breaks.Select(b => b.ExternalBreakRef).OrderBy(b => b);
                    var targetRefs     = schedule.Breaks.Select(b => b.ExternalBreakRef).OrderBy(b => b);
                    if (!storedRefs.SequenceEqual(targetRefs))
                    {
                        return(false);
                    }
                }

                var resultSpots = TestDataImporter.GetDataFromFile <Schedule>(fileName, "Spots").ToList();
                var allSpots    = _spotRepository.GetAll();

                return(allSpots.Count() == resultSpots.Count);
            }

            default:
                return(false);
            }
        }
        private static void VerifyRoundtripsAsExpected(OdbcDriver driver)
        {
            /*
            * Reasons this test might fail:
            * 1. You need to execute SqlBulkCopy.sql (in the same directory as this test) to create the test database.
            * 2. You need to update the connection string to specify the location of your instance of the test database.
            * 3. The particular driver is not installed on your PC.
            */

            const string connectionString = "Server=WORKSTATION\\SQL2012;Database=SqlBulkCopy;Trusted_Connection=yes;";
            const string tableName = "SqlBulkCopyTest";

            List<IBulkCopyBoundColumn> columns;
            var data = TestData.GetSampleData();

            BulkCopy.Driver = driver;
            BulkCopy.Trace = true;

            try
            {
                using (var sut = new BulkCopy())
                {
                    sut.LoginTimeout = 2;

                    try
                    {
                        sut.Connect(string.Concat(sut.DriverOptionString, ";", connectionString));

                    }
                    catch (Exception ex)
                    {
                        const string message = "Please refer to this test for possible solutions." +
                            "\r\n\r\nTesting: {0}." +
                            "\r\n\r\nODBC exception text: {1}.";

                        Assert.Fail(message, sut.DriverOptionString, ex.Message);
                    }

                    sut.ConnectionTimeout = 2;

                    sut.ExecuteDirect("TRUNCATE TABLE SqlBulkCopyTest;");

                    sut.Initialize(tableName);

                    var importer = new TestDataImporter(sut);

                    columns = sut.Columns
                        .Where(c => c.Index > 0)
                        .Cast<IBulkCopyBoundColumn>()
                        .ToList();

                    LoadData(importer, data);
                }
            }
            finally
            {
                BulkCopy.Trace = false;
            }

            List<object[]> rows;

            using (var cn = new SqlConnection(connectionString))
            {
                cn.Open();

                rows = FetchData(cn, columns.Count);
            }

            VerifyFetchedData(columns, data, rows);
        }
        private static void LoadData(TestDataImporter importer, IEnumerable<TestData> data)
        {
            foreach (var row in data)
            {
                var success = importer.SendRow(row);

                Assert.IsTrue(success, "SendRow");
            }

            Assert.IsTrue(importer.Done(), "Done");
        }