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));
        }
Ejemplo n.º 2
0
 private void Match_records(ActualBankRecord source, BankRecord match)
 {
     match.Matched  = true;
     source.Matched = true;
     match.Match    = source;
     source.Match   = match;
 }
        public void Can_write_new_contents_to_csv()
        {
            // Arrange
            var file_io  = new FileIO <BankRecord>(new FakeSpreadsheetRepoFactory(), _csv_file_path, "BankIn-formatted-date-only");
            var csv_file = new CSVFile <BankRecord>(file_io);

            csv_file.Load();
            var new_bank_record = new BankRecord();
            // Date, unreconciled amount, type and description are mandatory.
            // string csvLine = String.Format("DATE^UNRECONCILED_AMT^^TYPE^DESCRIPTION^^^^^");
            var todays_date = DateTime.Today.ToString("dd/MM/yyyy");

            new_bank_record.Load(String.Format("{0}^£12.34^^POS^Purchase^^^^^", todays_date));
            csv_file.Records.Add(new_bank_record);

            // Act
            csv_file.Write_to_csv_file("testing");

            // Assert
            var file_io_test_file = new FileIO <BankRecord>(new FakeSpreadsheetRepoFactory(), _csv_file_path, "BankIn-formatted-date-only-testing");
            var new_csv_file      = new CSVFile <BankRecord>(file_io_test_file);

            new_csv_file.Load(
                true,
                ',');
            List <string> csv_lines = new_csv_file.All_records_as_csv();

            Assert.AreEqual("01/02/2017,£350.00,,ABC,\"ZZZThing3\",,,,,", csv_lines[0]);
            Assert.AreEqual("01/03/2017,£350.00,,ABC,\"ZZZThing2\",,,,,", csv_lines[1]);
            Assert.AreEqual("24/03/2017,£200.12,,PCL,\"ZZZSpecialDescription001\",,,,,", csv_lines[2]);
            Assert.AreEqual("01/04/2017,£261.40,,PCL,\"ZZZSpecialDescription005\",,,,,", csv_lines[3]);
            Assert.AreEqual("03/04/2017,£350.00,,ABC,\"ZZZThing1\",,,,,", csv_lines[4]);
            Assert.AreEqual(String.Format("{0},£12.34,,POS,\"Purchase\",,,,,", todays_date), csv_lines[5]);
        }
        public void Can_write_amounts_containing_commas()
        {
            // Arrange
            var file_io  = new FileIO <BankRecord>(new FakeSpreadsheetRepoFactory(), _csv_file_path, "BankIn-formatted-date-only");
            var csv_file = new CSVFile <BankRecord>(file_io);

            csv_file.Load();
            var new_bank_record         = new BankRecord();
            var amount_containing_comma = "£1,234.55";

            new_bank_record.Load(string.Format("01/05/2017^{0}^^POS^Purchase^^^^^", amount_containing_comma));
            csv_file.Records.Add(new_bank_record);

            // Act
            csv_file.Write_to_csv_file("testing");

            // Assert
            var file_io_test_file = new FileIO <BankRecord>(new FakeSpreadsheetRepoFactory(), _csv_file_path, "BankIn-formatted-date-only-testing");
            var new_csv_file      = new CSVFile <BankRecord>(file_io_test_file);

            new_csv_file.Load(
                true,
                ',');

            Assert.AreEqual(1234.55, new_csv_file.Records[5].Unreconciled_amount);
            Assert.AreEqual("\"Purchase\"", new_csv_file.Records[5].Description);
        }
        public void Can_write_descriptions_containing_commas()
        {
            // Arrange
            var file_io  = new FileIO <BankRecord>(new FakeSpreadsheetRepoFactory(), _csv_file_path, "BankIn-formatted-date-only");
            var csv_file = new CSVFile <BankRecord>(file_io);

            csv_file.Load();
            var new_bank_record = new BankRecord();
            var description_containing_comma = "something, something, something else";

            // Date, unreconciled amount, type and description are mandatory.
            // string csvLine = String.Format("DATE^UNRECONCILED_AMT^^TYPE^DESCRIPTION^^^^^");
            new_bank_record.Load(string.Format("01/05/2017^12.34^^POS^{0}^^^^^", description_containing_comma));
            csv_file.Records.Add(new_bank_record);

            // Act
            csv_file.Write_to_csv_file("testing");

            // Assert
            var file_io_test_file = new FileIO <BankRecord>(new FakeSpreadsheetRepoFactory(), _csv_file_path, "BankIn-formatted-date-only-testing");
            var new_csv_file      = new CSVFile <BankRecord>(file_io_test_file);

            new_csv_file.Load(
                true,
                ',');

            Assert.AreEqual("01/05/2017,£12.34,,POS,\"something, something, something else\",,,,,", new_csv_file.Records[5].Source_line);
        }
Ejemplo n.º 6
0
        public void M_WillReturnMostRecentRowContainingSpecifiedText()
        {
            // Arrange
            var spreadsheet_name         = MainSheetNames.Bank_out;
            var text_to_search_for       = ReconConsts.Cred_card2_dd_description;
            var mock_spreadsheet_repo    = new Mock <ISpreadsheetRepo>();
            var cred_card1_dd_row_number = 10;
            var mock_cell_row            = new Mock <ICellRow>();
            var description = "found row";

            mock_cell_row.Setup(x => x.Read_cell(BankRecord.DescriptionIndex)).Returns(description);
            mock_cell_row.Setup(x => x.Read_cell(BankRecord.UnreconciledAmountIndex)).Returns((double)0);
            mock_cell_row.Setup(x => x.Read_cell(BankRecord.TypeIndex)).Returns(string.Empty);
            mock_cell_row.Setup(x => x.Read_cell(BankRecord.DateIndex)).Returns(DateTime.Today.ToOADate());
            mock_spreadsheet_repo.Setup(x => x.Find_row_number_of_last_row_with_cell_containing_text(
                                            spreadsheet_name, text_to_search_for, new List <int> {
                ReconConsts.DescriptionColumn
            }))
            .Returns(cred_card1_dd_row_number);
            mock_spreadsheet_repo.Setup(x => x.Read_specified_row(spreadsheet_name, cred_card1_dd_row_number)).Returns(mock_cell_row.Object);
            var spreadsheet = new Spreadsheet(mock_spreadsheet_repo.Object);

            // Act
            BankRecord bank_row = spreadsheet.Get_most_recent_row_containing_text <BankRecord>(
                spreadsheet_name,
                text_to_search_for,
                new List <int> {
                ReconConsts.DescriptionColumn
            });

            // Assert
            Assert.AreEqual(description, bank_row.Description);
        }
Ejemplo n.º 7
0
        public void M_WillAddMatchData_WhenPopulatingBankSpreadsheetRow()
        {
            // Arrange
            var row         = 10;
            var bank_record = new BankRecord
            {
                Match = new ActualBankRecord
                {
                    Date        = DateTime.Today,
                    Amount      = 22.34,
                    Type        = "POS",
                    Description = "match description"
                }
            };
            var mock_cells = new Mock <ICellSet>();

            // Act
            bank_record.Populate_spreadsheet_row(mock_cells.Object, row);

            // Assert
            mock_cells.Verify(x => x.Populate_cell(row, ActualBankRecord.DateSpreadsheetIndex + 1, bank_record.Match.Date), "Date");
            mock_cells.Verify(x => x.Populate_cell(row, ActualBankRecord.AmountSpreadsheetIndex + 1, bank_record.Match.Main_amount()), "Amount");
            mock_cells.Verify(x => x.Populate_cell(row, ActualBankRecord.TypeSpreadsheetIndex + 1, ((ActualBankRecord)bank_record.Match).Type), "Type");
            mock_cells.Verify(x => x.Populate_cell(row, ActualBankRecord.DescriptionSpreadsheetIndex + 1, bank_record.Match.Description), "Desc");
        }
Ejemplo n.º 8
0
        public void Will_populate_zero_amounts_as_empty_bank_record_cells()
        {
            // Arrange
            var bank_record = new BankRecord
            {
                Unreconciled_amount = 0,
                Cheque_number       = 0,
                Reconciled_amount   = 0
            };
            var cells           = _spreadsheet.Current_cells(TestSheetNames.Bank);
            var last_row_number = _spreadsheet.Last_row_number(TestSheetNames.Bank);
            var previous_record = new BankRecord();

            previous_record.Read_from_spreadsheet_row(_spreadsheet.Read_last_row(TestSheetNames.Bank));

            // Act
            bank_record.Populate_spreadsheet_row(cells, last_row_number);
            var new_row = _spreadsheet.Read_last_row(TestSheetNames.Bank);

            // Assert
            Assert.AreEqual(null, new_row.Read_cell(1));
            Assert.AreEqual(null, new_row.Read_cell(5));
            Assert.AreEqual(null, new_row.Read_cell(6));

            // Clean up
            previous_record.Populate_spreadsheet_row(cells, last_row_number);
        }
Ejemplo n.º 9
0
        public void When_copying_record_will_copy_all_important_data()
        {
            // Arrange
            var bank_record = new BankRecord
            {
                Date = DateTime.Today,
                Unreconciled_amount = 12.34,
                Description         = "Description",
                Reconciled_amount   = 56.78,
                Type          = "Type",
                Cheque_number = 10
            };

            bank_record.Update_source_line_for_output(',');

            // Act
            var copied_record = (BankRecord)bank_record.Copy();

            // Assert
            Assert.AreEqual(bank_record.Date, copied_record.Date);
            Assert.AreEqual(bank_record.Unreconciled_amount, copied_record.Unreconciled_amount);
            Assert.AreEqual(bank_record.Description, copied_record.Description);
            Assert.AreEqual(bank_record.Reconciled_amount, copied_record.Reconciled_amount);
            Assert.AreEqual(bank_record.Type, copied_record.Type);
            Assert.AreEqual(bank_record.Cheque_number, copied_record.Cheque_number);
            Assert.AreEqual(bank_record.OutputSourceLine, copied_record.OutputSourceLine);
        }
Ejemplo n.º 10
0
        public void Will_populate_bank_record_cells()
        {
            // Arrange
            var bank_record = new BankRecord
            {
                Date = new DateTime(year: 2018, month: 7, day: 1),
                Unreconciled_amount = 80.20,
                Type              = "Chq",
                Description       = "New description which will overwrite what's normally there.",
                Cheque_number     = 4234566,
                Reconciled_amount = 6666.66,
            };
            var cells           = _spreadsheet.Current_cells(TestSheetNames.Bank);
            var last_row_number = _spreadsheet.Last_row_number(TestSheetNames.Bank);
            var previous_record = new BankRecord();

            previous_record.Read_from_spreadsheet_row(_spreadsheet.Read_last_row(TestSheetNames.Bank));

            // Act
            bank_record.Populate_spreadsheet_row(cells, last_row_number);
            var new_row = _spreadsheet.Read_last_row(TestSheetNames.Bank);

            // Assert
            Assert.AreEqual(bank_record.Date, DateTime.FromOADate((double)new_row.Read_cell(0)));
            Assert.AreEqual(bank_record.Unreconciled_amount, (Double)new_row.Read_cell(1));
            Assert.AreEqual(bank_record.Type, (String)new_row.Read_cell(3));
            Assert.AreEqual(bank_record.Description, (String)new_row.Read_cell(4));
            Assert.AreEqual(bank_record.Cheque_number, (Double)new_row.Read_cell(5));
            Assert.AreEqual(bank_record.Reconciled_amount, (Double)new_row.Read_cell(6));

            // Clean up
            previous_record.Populate_spreadsheet_row(cells, last_row_number);
        }
Ejemplo n.º 11
0
        public void Create_new_combined_record(
            RecordForMatching <ActualBankRecord> record_for_matching,
            int match_index,
            ICSVFile <BankRecord> owned_file)
        {
            var sum_of_all_matches =
                record_for_matching.Matches[match_index].Actual_records.Sum(x => x.Main_amount());
            var missing_balance       = record_for_matching.SourceRecord.Main_amount() - sum_of_all_matches;
            var expense_amounts_match = record_for_matching.SourceRecord.Main_amount()
                                        .Double_equals(sum_of_all_matches);

            BankRecord new_match = New_combined_record(
                record_for_matching,
                match_index,
                expense_amounts_match,
                sum_of_all_matches);

            Update_expected_income_and_owned_files(
                record_for_matching,
                match_index,
                expense_amounts_match,
                sum_of_all_matches,
                missing_balance,
                owned_file);

            record_for_matching.Matches[match_index].Actual_records.Clear();
            record_for_matching.Matches[match_index].Actual_records.Add(new_match);
            owned_file.Add_record_permanently(new_match);
        }
Ejemplo n.º 12
0
        public void Throws_exception_for_bad_unreconciled_amount()
        {
            // Arrange
            var    bank_record              = new BankRecord();
            var    bad_amount               = "not an amount";
            string csv_line                 = String.Format("01/04/2017^{0}^^POS^Purchase^^^^^", bad_amount);
            bool   exception_thrown         = false;
            string expected_message_snippet = "empty";
            string error_message            = String.Empty;

            // Act
            try
            {
                bank_record.Load(csv_line);
            }
            catch (Exception ex)
            {
                exception_thrown = true;
                error_message    = ex.Message;
            }

            // Assert
            Assert.IsTrue(exception_thrown);
            Assert.IsTrue(error_message.Contains(expected_message_snippet));
        }
Ejemplo n.º 13
0
        private void Set_up_for_loader_bespoke_stuff(Mock <IInputOutput> mock_input_output, Mock <ISpreadsheet> mock_spreadsheet)
        {
            DateTime last_direct_debit_date   = new DateTime(2018, 12, 17);
            var      next_direct_debit_date01 = last_direct_debit_date.AddMonths(1);
            var      bank_record = new BankRecord {
                Date = last_direct_debit_date
            };

            mock_input_output.Setup(x => x.Get_input(string.Format(
                                                         ReconConsts.AskForCredCardDirectDebit,
                                                         ReconConsts.Cred_card2_name,
                                                         next_direct_debit_date01.ToShortDateString()), "")).Returns("0");
            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);

            mock_input_output.Setup(x => x.Get_input(string.Format(
                                                         ReconConsts.AskForCredCardDirectDebit,
                                                         ReconConsts.Cred_card1_name,
                                                         next_direct_debit_date01.ToShortDateString()), "")).Returns("0");
            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);
        }
Ejemplo n.º 14
0
        public bool InsertBankBookRow(TransactionInCheque chequeRecord)
        {
            int recordId = InsertLedgerRecord(chequeRecord);

            if (recordId > 0)
            {
                ChequeInfo chequeInfo    = chequeRecord.ChequeInfo;
                BankRecord dalBankRecord = chequeInfo == null
                                               ? new BankRecord
                {
                    RecordID = recordId
                }
                                               : new BankRecord
                {
                    RecordID   = recordId,
                    ChequeNo   = chequeRecord.ChequeInfo.ChequeNo,
                    BankName   = chequeRecord.ChequeInfo.BankName,
                    Branch     = chequeRecord.ChequeInfo.BankBranch,
                    ChequeDate = chequeRecord.ChequeInfo.Date
                };
                _db.AddToBankRecords(dalBankRecord);
                _db.SaveChanges();
                return(true);
            }
            return(false);
        }
        public DateTime Get_next_unplanned_month()
        {
            string     mortgage_row_description = Get_budget_item_description(Codes.Code042);
            BankRecord bank_record = Get_last_bank_out_record_with_specified_description(mortgage_row_description);

            DateTime next_unplanned_month = bank_record.Date.AddMonths(1);

            return(next_unplanned_month);
        }
Ejemplo n.º 16
0
 private void Assert_direct_debit_details_are_correct(
     BankRecord bank_record,
     DateTime expected_date,
     double expected_amount,
     string expected_description)
 {
     Assert.AreEqual(expected_description, bank_record.Description);
     Assert.AreEqual(expected_date, bank_record.Date);
     Assert.AreEqual(expected_amount, bank_record.Unreconciled_amount);
     Assert.AreEqual("POS", bank_record.Type);
 }
Ejemplo n.º 17
0
        public void Can_cope_with_empty_cheque_number()
        {
            // Arrange
            var    bank_record = new BankRecord();
            string csv_line    = String.Format("01/04/2017^£13.95^^POS^Purchase^^^^^");

            // Act
            bank_record.Load(csv_line);

            // Assert
            Assert.AreEqual(0, bank_record.Cheque_number);
        }
Ejemplo n.º 18
0
        public void Should_be_able_to_cope_with_too_few_input_fields()
        {
            // Arrange
            var    bank_record = new BankRecord();
            string csv_line    = "01/04/2017^12.34^^POS^Purchase";

            // Act
            bank_record.Load(csv_line);

            // Assert
            Assert.AreEqual(0, bank_record.Reconciled_amount);
        }
Ejemplo n.º 19
0
        public void M_WhenAddingMonthlyBudgetedDataToSpreadsheet_WillOrderResultsByDate()
        {
            // Arrange
            var budget_item_list_data = new BudgetItemListData
            {
                Sheet_name          = MainSheetNames.Budget_in,
                Start_divider       = Dividers.Date,
                End_divider         = Dividers.Total,
                First_column_number = 2,
                Last_column_number  = 6
            };
            var first_month           = 12;
            var last_month            = 3;
            var mock_spreadsheet_repo = new Mock <ISpreadsheetRepo>();
            var budget_data_setup     = When_adding_budgeted_data_to_spreadsheet <BankRecord>(
                first_month,
                last_month,
                mock_spreadsheet_repo,
                budget_item_list_data);
            var mock_bank_file_io = new Mock <IFileIO <BankRecord> >();

            mock_bank_file_io.Setup(x => x.Load(It.IsAny <List <string> >(), null))
            .Returns(new List <BankRecord> {
                new BankRecord {
                    Date = new DateTime(budget_data_setup.BudgetingMonths.Start_year, first_month, 10)
                },
                new BankRecord {
                    Date = new DateTime(budget_data_setup.BudgetingMonths.Start_year, first_month, 4)
                },
                new BankRecord {
                    Date = new DateTime(budget_data_setup.BudgetingMonths.Start_year, first_month, 25)
                }
            });
            var pending_file = new CSVFile <BankRecord>(mock_bank_file_io.Object);

            pending_file.Load();
            var spreadsheet = new Spreadsheet(mock_spreadsheet_repo.Object);

            // Act
            spreadsheet.Add_budgeted_monthly_data_to_pending_file(budget_data_setup.BudgetingMonths, pending_file, budget_item_list_data);

            // Assert
            BankRecord previous_record = null;

            foreach (BankRecord record in pending_file.Records)
            {
                if (null != previous_record)
                {
                    Assert.IsTrue(record.Date.ToOADate() > previous_record.Date.ToOADate());
                }
                previous_record = record;
            }
        }
Ejemplo n.º 20
0
        public void Can_read_amount_containing_comma_from_csv()
        {
            // Arrange
            var    bank_record = new BankRecord();
            string csv_line    = String.Format("01/04/2017^£4,567.89^^POS^Purchase^^^^^");

            // Act
            bank_record.Load(csv_line);

            // Assert
            Assert.AreEqual(4567.89, bank_record.Unreconciled_amount);
        }
        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);
        }
Ejemplo n.º 22
0
        public void Can_cope_with_bad_reconciled_amount()
        {
            // Arrange
            var    bank_record = new BankRecord();
            var    bad_amount  = "not an amount";
            string csv_line    = String.Format("01/04/2017^£13.95^^POS^Purchase^^{0}^^^", bad_amount);

            // Act
            bank_record.Load(csv_line);

            // Assert
            Assert.AreEqual(0, bank_record.Reconciled_amount);
        }
Ejemplo n.º 23
0
        public void Will_populate_source_line_when_reading_from_bank_record_cells()
        {
            // Arrange
            String expected_source_line = String.Format("02/07/2018^£5.20^^ABC^description4^42345^\"£7,567.89\"^^^");
            var    bank_record          = new BankRecord();
            var    cells = _spreadsheet.Read_last_row(TestSheetNames.Bank);

            // Act
            bank_record.Read_from_spreadsheet_row(cells);

            // Assert
            Assert.AreEqual(expected_source_line, bank_record.OutputSourceLine);
        }
Ejemplo n.º 24
0
        public void Should_be_able_to_read_unreconciled_amounts_containing_commas()
        {
            // Arrange
            var    bank_record             = new BankRecord();
            var    amount_containing_comma = "£1,234.55";
            string csv_line = String.Format("01/04/2017^{0}^^POS^Purchase^1234^^^^", amount_containing_comma);

            // Act
            bank_record.Load(csv_line);

            // Assert
            Assert.AreEqual(1234.55, bank_record.Unreconciled_amount);
        }
Ejemplo n.º 25
0
        public void Can_read_type_from_csv()
        {
            // Arrange
            var    bank_record   = new BankRecord();
            var    expected_type = "POS";
            string csv_line      = String.Format("01/04/2017^£13.95^^{0}^Purchase^^^^^", expected_type);

            // Act
            bank_record.Load(csv_line);

            // Assert
            Assert.AreEqual(expected_type, bank_record.Type);
        }
Ejemplo n.º 26
0
        public void Can_read_description_from_csv()
        {
            // Arrange
            var    bank_record          = new BankRecord();
            var    expected_description = "Purchase";
            string csv_line             = String.Format("01/04/2017^£13.95^^POS^{0}^^^^^", expected_description);

            // Act
            bank_record.Load(csv_line);

            // Assert
            Assert.AreEqual(expected_description, bank_record.Description);
        }
Ejemplo n.º 27
0
        public void Can_read_cheque_number_from_csv()
        {
            // Arrange
            var    bank_record            = new BankRecord();
            int    expected_cheque_number = 1395;
            string csv_line = String.Format("01/04/2017^£13.95^^POS^Purchase^{0}^^^^", expected_cheque_number);

            // Act
            bank_record.Load(csv_line);

            // Assert
            Assert.AreEqual(expected_cheque_number, bank_record.Cheque_number);
        }
Ejemplo n.º 28
0
        public void Can_read_date_from_csv()
        {
            // Arrange
            var    bank_record             = new BankRecord();
            string expected_date_as_string = "01/04/2017";
            string csv_line      = String.Format("{0}^£13.95^^POS^Purchase^^^^^", expected_date_as_string);
            var    expected_date = Convert.ToDateTime(expected_date_as_string, StringHelper.Culture());

            // Act
            bank_record.Load(csv_line);

            // Assert
            Assert.AreEqual(expected_date, bank_record.Date);
        }
Ejemplo n.º 29
0
        public void Can_read_amount_surrounded_by_quotes_from_csv()
        {
            // Arrange
            var    bank_record     = new BankRecord();
            var    expected_amount = 13.95;
            string input_amount    = "£" + expected_amount;
            string csv_line        = String.Format("01/04/2017^\"{0}\"^^POS^Purchase^^^^^", input_amount);

            // Act
            bank_record.Load(csv_line);

            // Assert
            Assert.AreEqual(expected_amount, bank_record.Unreconciled_amount);
        }
Ejemplo n.º 30
0
        public void Will_assume_missing_type_field_if_description_is_unpopulated()
        {
            // Arrange
            var    bank_record = new BankRecord();
            var    type_is_actually_description = "Purchase";
            string csv_line = String.Format("01/04/2017^£13.95^^{0}^^^^^^", type_is_actually_description);

            // Act
            bank_record.Load(csv_line);

            // Assert
            Assert.AreEqual(BankRecord.EmptyType, bank_record.Type);
            Assert.AreEqual(type_is_actually_description, bank_record.Description);
        }