Beispiel #1
0
    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)
Beispiel #2
0
    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())
Beispiel #3
0
    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)
Beispiel #4
0
    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)
Beispiel #5
0
    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))
Beispiel #6
0
    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)
Beispiel #7
0
 def test_create_transaction(self):
     transaction = Transaction("2020-01-22", "john", "mary", 20)
     self.assertEqual(str(transaction), "2020-01-22, john, mary, 20")
Beispiel #8
0
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)
Beispiel #9
0
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")