def test_get_balance_with_five_transactions(self): account_name = "john" account = Account(account_name) payer = "john" payee = "mary" account = Account(account_name) transaction = Transaction("2020-01-01", payer, payee, 20) account.add_transaction(transaction) transaction = Transaction("2020-01-03", payer, payee, 20) account.add_transaction(transaction) transaction = Transaction("2020-01-05", payer, payee, 20) account.add_transaction(transaction) transaction = Transaction("2020-01-22", payer, payee, 20) account.add_transaction(transaction) transaction = Transaction("2020-01-30", payer, payee, 20) account.add_transaction(transaction) self.assertEqual(account.get_balance("2020-01-02"), -20) self.assertEqual(account.get_balance("2020-01-05"), -60) self.assertEqual(account.get_balance("2020-01-06"), -60) self.assertEqual(account.get_balance("2020-01-07"), -60) self.assertEqual(account.get_balance("2020-01-21"), -60) self.assertEqual(account.get_balance("2020-01-22"), -80) self.assertEqual(account.get_balance("2020-01-23"), -80) self.assertEqual(account.get_balance("2020-01-29"), -80) self.assertEqual(account.get_balance("2020-01-30"), -100) self.assertEqual(account.get_balance("2020-01-31"), -100)
def test_get_transactions(self): self.ledger.create_account('101', 'Cash', 'asset') self.ledger.create_account('102', 'Equipment', 'asset') self.ledger.create_account('301', 'Share Capital', 'equity') self.ledger.record_transaction(date(2016, 9, 1), "Record the funder's investment", [('101', 500000), ('301', -500000)]) self.ledger.record_transaction(date(2016, 9, 2), "Buy a laptop", [('101', -100000), ('102', 100000)]) self.assertEqual([ Transaction(date(2016, 9, 1), "Record the funder's investment", [('101', 500000), ('301', -500000)]), Transaction(date(2016, 9, 2), "Buy a laptop", [('101', -100000), ('102', 100000)]), ], self.ledger.get_transactions())
def test_get_balance_with_two_transactions(self): account_name = "john" account = Account(account_name) payer = "john" payee = "mary" account = Account(account_name) transaction = Transaction("2020-01-22", payer, payee, 20) account.add_transaction(transaction) transaction = Transaction("2020-01-25", payer, payee, 20) account.add_transaction(transaction) self.assertEqual(account.get_balance("2020-01-22"), -20) # Check balance between transactions is as expected self.assertEqual(account.get_balance("2020-01-23"), -20) # Check final balance as expected self.assertEqual(account.get_balance("2020-01-25"), -40)
def test_add_invalid_name_transaction(self): account_name = "john" account = Account(account_name) payer = "mary" payee = "insurance" account = Account(account_name) transaction = Transaction("2020-01-22", payer, payee, 20) with self.assertRaises(AccountError): account.add_transaction(transaction)
def test_record_transaction(self): self.ledger.create_account('101', 'Cash', 'asset') self.ledger.create_account('301', 'Share Capital', 'equity') tx_id = self.ledger.record_transaction( date(2016, 9, 1), "Record the funder's investment", [('101', 500000), ('301', -500000)]) self.assertEqual( Transaction(date(2016, 9, 1), "Record the funder's investment", [('101', 500000), ('301', -500000)]), self.ledger.get_transaction(tx_id))
def test_get_balance_with_one_transaction(self): account_name = "john" account = Account(account_name) payer = "john" payee = "mary" account = Account(account_name) transaction = Transaction("2020-01-22", payer, payee, 20) account.add_transaction(transaction) self.assertEqual(account.balance, -20) # Balance on date of transaction should be -20 self.assertEqual(account.get_balance("2020-01-22"), -20) # Balance after date of transaction should be -20 self.assertEqual(account.get_balance("2020-01-25"), -20) # Balance before first transaction - assume open and 0 self.assertEqual(account.get_balance("2015-01-21"), 0)
def test_create_transaction(self): transaction = Transaction("2020-01-22", "john", "mary", 20) self.assertEqual(str(transaction), "2020-01-22, john, mary, 20")
def test_add_transaction(in_date: str, in_amount: float, in_from: str, in_to: str): t= Transaction(in_date,\ in_amount,\ in_from,\ in_to)
def getTransaction(ledger_, str_transaction): sourceAccount = ledger.getAccountFromStr(str_transaction.sourceAccount) targetAccount = ledger.getAccountFromStr(str_transaction.targetAccount) return Transaction(str_transaction.amount, sourceAccount, targetAccount, str_transaction.originator, str_transaction.date, str_transaction.usage)
if category.startswith("From '"): continue if not expenseacct in monefy_account_shorthands: print("%s not in %s" % (expenseacct, monefy_account_shorthands)) assert (False) targetacct = monefy_account_shorthands[expenseacct] description, *commentlist = csvdescription.split(";") description = description.strip() comment = " ".join(commentlist).strip() if comment == "": comment = None new_transaction = Transaction(description, date).addPosting( Posting(targetacct, Amount(amountCmp, currency))) if not comment is None and len(comment) > 0: new_transaction tm = transfer_regex_.search(category) if not tm is None: sourceacct = tm.group(1) if not sourceacct in monefy_account_shorthands: print("unknown sourceacct:", sourceacct, file=sys.stderr) assert (False) sourceacct = monefy_account_shorthands[sourceacct] if description == "Assert": new_transaction = Transaction(description, date).addPosting( Posting(sourceacct, Amount(0, currency)).addPostPostingAssertAmount( Amount(-1 * amountCmp, currency))).addTag("monefy")