public void Merge_bespoke_data_with_pending_file(
            IInputOutput input_output,
            ISpreadsheet spreadsheet,
            ICSVFile <BankRecord> pending_file,
            BudgetingMonths budgeting_months,
            DataLoadingInformation <ActualBankRecord, BankRecord> data_loading_info)
        {
            input_output.Output_line(ReconConsts.Loading_expenses);
            _expected_income_csv_file.Load(false);

            spreadsheet.Add_unreconciled_rows_to_csv_file <ExpectedIncomeRecord>(MainSheetNames.Expected_in, _expected_income_file.File);
            _expected_income_csv_file.Populate_source_records_from_records();
            _expected_income_file.Filter_for_employer_expenses_and_bank_transactions_only();

            _expected_income_file.Copy_to_pending_file(pending_file);
            _expected_income_csv_file.Populate_records_from_original_file_load();
        }
        public void Will_filter_for_employer_expense_records_and_bank_transactions_only()
        {
            // Arrange
            var mock_expected_income_file_io = new Mock <IFileIO <ExpectedIncomeRecord> >();
            var expected_income_csv_file     = new CSVFile <ExpectedIncomeRecord>(mock_expected_income_file_io.Object);
            var expected_description_1       = "description1";
            var expected_description_2       = "description2";
            var expected_income_records      = new List <ExpectedIncomeRecord>
            {
                new ExpectedIncomeRecord
                {
                    Description = expected_description_1,
                    Code        = Codes.Expenses
                },
                new ExpectedIncomeRecord
                {
                    Description = expected_description_2,
                    Code        = Codes.ExpectedInBankTransaction
                },
                new ExpectedIncomeRecord
                {
                    Description = "description3",
                    Code        = "other"
                }
            };

            mock_expected_income_file_io.Setup(x => x.Load(It.IsAny <List <string> >(), null)).Returns(expected_income_records);
            expected_income_csv_file.Load();
            var expected_income_file = new ExpectedIncomeFile(expected_income_csv_file);

            // Act
            expected_income_file.Filter_for_employer_expenses_and_bank_transactions_only();

            // Assert
            Assert.AreEqual(2, expected_income_csv_file.Records.Count);
            Assert.AreEqual(expected_description_1, expected_income_csv_file.Records[0].Description);
            Assert.AreEqual(expected_description_2, expected_income_csv_file.Records[1].Description);
        }