public void LoadIntoDatabase()
        {
            var records = ParserHelper.ParseRecords(Records);

            using (var connection = _fixture.CreateConnection())
            {
                connection.Open();
                var loader = new ScheduleChangeLoader(connection, new Sequence(), Substitute.For <ILogger>());
                loader.Initialise();

                var schedule = records[0] as Schedule;
                var change   = schedule.Records[7] as ScheduleChange;
                loader.Add(12, 34, change);

                using (var transaction = connection.BeginTransaction())
                {
                    loader.Load(transaction);

                    using (var command = connection.CreateCommand())
                    {
                        command.Transaction = transaction;
                        command.CommandText = "SELECT * FROM ScheduleChanges";
                        using (var adapter = new SqlDataAdapter(command))
                        {
                            var table = new DataTable();
                            adapter.Fill(table);
                            Assert.Equal(1, table.Rows.Count);
                        }

                        ;
                    }
                }
            }
        }
        public void CreateDataTableWithLocationColumns()
        {
            using (var connection = _fixture.CreateConnection())
            {
                connection.Open();
                var loader = new ScheduleChangeLoader(connection, new Sequence(), Substitute.For <ILogger>());
                loader.Initialise();
                var table = loader.Table;

                Assert.Equal(19, table.Columns.Count);
                Assert.NotNull(table.Columns["ScheduleLocationId"]);
            }
        }
        private ScheduleLoader InitialiseLoader(SqlConnection connection)
        {
            var sequence = new Sequence();
            var lookup   = Substitute.For <IDatabaseIdLookup>();

            lookup.Find(Arg.Any <string>()).Returns(c => sequence.GetNext());
            _schedules = new ScheduleHeaderLoader(connection, new Sequence(), Substitute.For <ILogger>());
            _locations = new ScheduleLocationLoader(connection, new Sequence(), lookup, Substitute.For <ILogger>());
            _changes   = new ScheduleChangeLoader(connection, new Sequence(), Substitute.For <ILogger>());
            var loader = new ScheduleLoader(_schedules, _locations, _changes, Substitute.For <ILogger>());

            loader.Initialise();
            return(loader);
        }
        public void AddChange()
        {
            var records = ParserHelper.ParseRecords(Records);

            using (var connection = _fixture.CreateConnection())
            {
                connection.Open();
                var loader = new ScheduleChangeLoader(connection, new Sequence(), Substitute.For <ILogger>());
                loader.Initialise();

                var schedule = records[0] as Schedule;
                var change   = schedule.Records[7] as ScheduleChange;
                loader.Add(12, 34, change);

                // CRHAYESAH OO2Y72    121384001 EMU360 100D     S
                var row = loader.Table.Rows[0];
                Assert.Equal(1L, row["Id"]);
                Assert.Equal(12L, row["ScheduleId"]);
                Assert.Equal(34L, row["ScheduleLocationId"]);
                Assert.Equal("OO", row["Category"]);
                Assert.Equal("2Y72", row["TrainIdentity"]);
                Assert.Equal(DBNull.Value, row["NrsHeadCode"]);
                Assert.Equal("21384001", row["ServiceCode"]);
                Assert.Equal(DBNull.Value, row["PortionId"]);
                Assert.Equal("EMU", row["PowerType"]);
                Assert.Equal("360", row["TimingLoadType"]);
                Assert.Equal(100, row["Speed"]);
                Assert.Equal("D", row["OperatingCharacteristics"]);
                Assert.Equal("S", row["SeatClass"]);
                Assert.Equal(DBNull.Value, row["SleeperClass"]);
                Assert.Equal("", row["ReservationIndicator"]);
                Assert.Equal(DBNull.Value, row["Catering"]);
                Assert.Equal(DBNull.Value, row["Branding"]);
                Assert.Equal(DBNull.Value, row["EuropeanUic"]);
                Assert.Equal(DBNull.Value, row["RetailServiceId"]);
            }
        }