コード例 #1
0
        public void M_MergeBespokeDataWithPendingFile_WillUpdateCredCard1BalancesOnTotalsSheet()
        {
            // 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_card1_name,
                           next_direct_debit_date01.ToShortDateString()), ""))
            .Returns(new_balance.ToString);
            mock_input_output
            .Setup(x => x.Get_input(
                       string.Format(
                           ReconConsts.AskForCredCardDirectDebit,
                           ReconConsts.Cred_card1_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_card1_dd_description, new List <int> {
                ReconConsts.DescriptionColumn, ReconConsts.DdDescriptionColumn
            }))
            .Returns(bank_record);
            var mock_pending_file = new Mock <ICSVFile <CredCard1InOutRecord> >();
            var pending_records   = new List <CredCard1InOutRecord>();

            mock_pending_file.Setup(x => x.Records).Returns(pending_records);
            var budgeting_months = new BudgetingMonths();
            var loading_info     = new CredCard1AndCredCard1InOutLoader().Loading_info();
            var cred_card1_and_cred_card1_in_out_loader = new CredCard1AndCredCard1InOutLoader();

            // Act
            cred_card1_and_cred_card1_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_card1_bal,
                                        new_balance * -1,
                                        string.Format(
                                            ReconConsts.CredCardBalanceDescription,
                                            ReconConsts.Cred_card1_name,
                                            $"{last_direct_debit_date.ToString("MMM")} {last_direct_debit_date.Year}"),
                                        5, 6, 4, mock_input_output.Object), Times.Exactly(1));
        }
コード例 #2
0
        public void Do_matching(FilePaths main_file_paths, ISpreadsheetRepoFactory spreadsheet_factory)
        {
            var loading_info = new CredCard1AndCredCard1InOutLoader().Loading_info();

            loading_info.File_paths = main_file_paths;
            var file_loader = new FileLoader(_input_output, new Clock());
            ReconciliationInterface <CredCard1Record, CredCard1InOutRecord> reconciliation_interface
                = file_loader.Load_files_and_merge_data <CredCard1Record, CredCard1InOutRecord>(loading_info, spreadsheet_factory, this);

            reconciliation_interface?.Do_the_matching();
        }
コード例 #3
0
        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);

            mock_input_output
            .Setup(x => x.Get_input(
                       string.Format(
                           ReconConsts.AskForCredCardDirectDebit,
                           ReconConsts.Cred_card1_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_card1_dd_description, new List <int> {
                ReconConsts.DescriptionColumn, ReconConsts.DdDescriptionColumn
            }))
            .Returns(bank_record);
            var mock_pending_file = new Mock <ICSVFile <CredCard1InOutRecord> >();
            var pending_records   = new List <CredCard1InOutRecord>();

            mock_pending_file.Setup(x => x.Records).Returns(pending_records);
            var budgeting_months = new BudgetingMonths();
            var loading_info     = new CredCard1AndCredCard1InOutLoader().Loading_info();
            var cred_card1_and_cred_card1_in_out_loader = new CredCard1AndCredCard1InOutLoader();

            // Act
            cred_card1_and_cred_card1_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);
        }
コード例 #4
0
        public void M_MergeBespokeDataWithPendingFile_WillAddMostRecentCredCard1DirectDebitsAsNegative()
        {
            // 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_card1_name,
                ReconConsts.Cred_card1_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 <CredCard1InOutRecord> >();
            var pending_records   = new List <CredCard1InOutRecord>();

            mock_pending_file.Setup(x => x.Records).Returns(pending_records);
            var budgeting_months = new BudgetingMonths();
            var loading_info     = new CredCard1AndCredCard1InOutLoader().Loading_info();
            var cred_card1_and_cred_card1_in_out_loader = new CredCard1AndCredCard1InOutLoader();

            // Act
            cred_card1_and_cred_card1_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_card1_regular_pymt_description);
            Assert_direct_debit_details_are_correct(pending_records[1], next_direct_debit_date02, expected_amount2, ReconConsts.Cred_card1_regular_pymt_description);
        }