public void M_MergeBespokeDataWithPendingFile_WillUpdateCredCard2BalancesOnTotalsSheet() { // Arrange TestHelper.Set_correct_date_formatting(); var mock_input_output = new Mock <IInputOutput>(); double new_balance = 5673.99; DateTime last_direct_debit_date = new DateTime(2018, 12, 17); var next_direct_debit_date01 = last_direct_debit_date.AddMonths(1); var next_direct_debit_date02 = last_direct_debit_date.AddMonths(2); mock_input_output .Setup(x => x.Get_input( string.Format( ReconConsts.AskForCredCardDirectDebit, ReconConsts.Cred_card2_name, next_direct_debit_date01.ToShortDateString()), "")) .Returns(new_balance.ToString); mock_input_output .Setup(x => x.Get_input( string.Format( ReconConsts.AskForCredCardDirectDebit, ReconConsts.Cred_card2_name, next_direct_debit_date02.ToShortDateString()), "")) .Returns("0"); var bank_record = new BankRecord { Date = last_direct_debit_date }; var mock_spreadsheet = new Mock <ISpreadsheet>(); mock_spreadsheet.Setup(x => x.Get_most_recent_row_containing_text <BankRecord>( MainSheetNames.Bank_out, ReconConsts.Cred_card2_dd_description, new List <int> { ReconConsts.DescriptionColumn, ReconConsts.DdDescriptionColumn })) .Returns(bank_record); var mock_pending_file = new Mock <ICSVFile <CredCard2InOutRecord> >(); var pending_records = new List <CredCard2InOutRecord>(); mock_pending_file.Setup(x => x.Records).Returns(pending_records); var budgeting_months = new BudgetingMonths(); var loading_info = new CredCard2AndCredCard2InOutLoader().Loading_info(); var cred_card2_and_cred_card2_in_out_loader = new CredCard2AndCredCard2InOutLoader(); // Act cred_card2_and_cred_card2_in_out_loader.Merge_bespoke_data_with_pending_file( mock_input_output.Object, mock_spreadsheet.Object, mock_pending_file.Object, budgeting_months, loading_info); // Assert mock_spreadsheet.Verify(x => x.Update_balance_on_totals_sheet( Codes.Cred_card2_bal, new_balance * -1, string.Format( ReconConsts.CredCardBalanceDescription, ReconConsts.Cred_card2_name, $"{last_direct_debit_date.ToString("MMM")} {last_direct_debit_date.Year}"), 5, 6, 4, mock_input_output.Object), Times.Exactly(1)); }
public void Do_matching(FilePaths main_file_paths) { var loading_info = new CredCard2AndCredCard2InOutLoader().Loading_info(); loading_info.File_paths = main_file_paths; var file_loader = new FileLoader(_input_output); ReconciliationInterface <CredCard2Record, CredCard2InOutRecord> reconciliation_interface = file_loader.Load_files_and_merge_data <CredCard2Record, CredCard2InOutRecord>(loading_info, _spreadsheet_factory, this); reconciliation_interface?.Do_the_matching(); }
public void Merge_Bespoke_Data_With_Pending_File__Will_Not_Update_Balance_On_Totals_Sheet_If_User_Enters_No_Data() { // Arrange TestHelper.Set_correct_date_formatting(); var mock_input_output = new Mock <IInputOutput>(); DateTime last_direct_debit_date = new DateTime(2018, 12, 17); var next_direct_debit_date01 = last_direct_debit_date.AddMonths(1); var next_direct_debit_date02 = last_direct_debit_date.AddMonths(2); mock_input_output .Setup(x => x.Get_input( string.Format( ReconConsts.AskForCredCardDirectDebit, ReconConsts.Cred_card2_name, next_direct_debit_date01.ToShortDateString()), "")) .Returns("0"); var bank_record = new BankRecord { Date = last_direct_debit_date }; var mock_spreadsheet = new Mock <ISpreadsheet>(); mock_spreadsheet.Setup(x => x.Get_most_recent_row_containing_text <BankRecord>( MainSheetNames.Bank_out, ReconConsts.Cred_card2_dd_description, new List <int> { ReconConsts.DescriptionColumn, ReconConsts.DdDescriptionColumn })) .Returns(bank_record); var mock_pending_file = new Mock <ICSVFile <CredCard2InOutRecord> >(); var pending_records = new List <CredCard2InOutRecord>(); mock_pending_file.Setup(x => x.Records).Returns(pending_records); var budgeting_months = new BudgetingMonths(); var loading_info = new CredCard2AndCredCard2InOutLoader().Loading_info(); var cred_card2_and_cred_card2_in_out_loader = new CredCard2AndCredCard2InOutLoader(); // Act cred_card2_and_cred_card2_in_out_loader.Merge_bespoke_data_with_pending_file( mock_input_output.Object, mock_spreadsheet.Object, mock_pending_file.Object, budgeting_months, loading_info); // Assert mock_spreadsheet.Verify(x => x.Update_balance_on_totals_sheet( It.IsAny <string>(), It.IsAny <double>(), It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>(), mock_input_output.Object), Times.Never); }
public void M_MergeBespokeDataWithPendingFile_WillAddMostRecentCredCard2DirectDebitsAsNegative() { // Arrange TestHelper.Set_correct_date_formatting(); var mock_input_output = new Mock <IInputOutput>(); var mock_spreadsheet_repo = new Mock <ISpreadsheetRepo>(); double entered_amount1 = 1234.55; double entered_amount2 = 5673.99; DateTime last_direct_debit_date = new DateTime(2018, 12, 17); var next_direct_debit_date01 = last_direct_debit_date.AddMonths(1); var next_direct_debit_date02 = last_direct_debit_date.AddMonths(2); Set_up_for_credit_card_data( ReconConsts.Cred_card2_name, ReconConsts.Cred_card2_dd_description, last_direct_debit_date, entered_amount1, entered_amount2, mock_input_output, mock_spreadsheet_repo, 1); var spreadsheet = new Spreadsheet(mock_spreadsheet_repo.Object); var mock_pending_file = new Mock <ICSVFile <CredCard2InOutRecord> >(); var pending_records = new List <CredCard2InOutRecord>(); mock_pending_file.Setup(x => x.Records).Returns(pending_records); var budgeting_months = new BudgetingMonths(); var loading_info = new CredCard2AndCredCard2InOutLoader().Loading_info(); var cred_card2_and_cred_card2_in_out_loader = new CredCard2AndCredCard2InOutLoader(); // Act cred_card2_and_cred_card2_in_out_loader.Merge_bespoke_data_with_pending_file( mock_input_output.Object, spreadsheet, mock_pending_file.Object, budgeting_months, loading_info); // Assert double expected_amount1 = entered_amount1 * -1; double expected_amount2 = entered_amount2 * -1; Assert.AreEqual(2, pending_records.Count); Assert_direct_debit_details_are_correct(pending_records[0], next_direct_debit_date01, expected_amount1, ReconConsts.Cred_card2_regular_pymt_description); Assert_direct_debit_details_are_correct(pending_records[1], next_direct_debit_date02, expected_amount2, ReconConsts.Cred_card2_regular_pymt_description); }