class TestDindaBank(unittest.TestCase): def setUp(self): self.bank = Bank() def test_check_args(self): self.assertRaises(InvalidArgsException, checkArgs, ['python', 'file.csv', 'file2.csv', 'file3.csv']) self.assertRaises(InvalidArgsException, checkArgs, ['python', 'file.csv']) def test_load_non_existent_account_file(self): self.assertRaises(IOException, self.bank.loadAccountsFromCsv, 'non_existent_file.csv') def test_load_accounts_file_with_no_accounts(self): self.bank.loadAccountsFromCsv('test_resources/empty_accounts.csv') self.assertEquals(len(self.bank.accounts), 0) def test_load_accounts_from_valid_file(self): self.bank.loadAccountsFromCsv('test_resources/valid_accounts.csv') self.assertEquals(len(self.bank.accounts), 1) def test_load_invalid_accounts_file(self): self.assertRaises(InvalidFormatException, self.bank.loadAccountsFromCsv, 'test_resources/invalid_accounts_missing_value.csv') self.assertRaises(InvalidFormatException, self.bank.loadAccountsFromCsv, 'test_resources/invalid_accounts_missing_key.csv') def test_process_non_existent_transaction_file(self): self.assertRaises(IOException, self.bank.processTransactionsFromCsv, 'non_existent_file.csv') def test_process_and_match_account_with_transactions(self): self.test_load_accounts_from_valid_file() self.bank.processTransactionsFromCsv('test_resources/valid_transactions.csv') def test_process_transaction_file_with_no_transactions(self): self.bank.processTransactionsFromCsv('test_resources/empty_transactions.csv') def test_load_invalid_transaction_file(self): self.assertRaises(InvalidFormatException, self.bank.processTransactionsFromCsv, 'test_resources/invalid_transactions_missing_key.csv') def test_process_debit_transaction_with_fee(self): account = Account(1,0) account.processTransaction(-1) self.assertEquals(account.balance, -6) def test_process_debit_transaction(self): account = Account(1,101) account.processTransaction(-1) self.assertEquals(account.balance, 100) def test_process_credit_transaction(self): account = Account(1,0) account.processTransaction(1000) self.assertEquals(account.balance, 1000)
import sys from models import Bank from models import InvalidArgsException def checkArgs(args): if len(args) != 3: raise InvalidArgsException if __name__ == '__main__': print('- Welcome do Dinda Bank') checkArgs(sys.argv) dinda = Bank() dinda.loadAccountsFromCsv(sys.argv[1]) dinda.processTransactionsFromCsv(sys.argv[2]) print dinda