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)); }
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); }
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); }
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"); }
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); }
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); }
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); }
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); }
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)); }
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); }
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); }
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); }
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); }
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); }
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; } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }