blob: eab377cfe47cca0d67ca456fe611c03a32ae678d (
plain) (
tree)
|
|
__copyright__ = 'Copyright (c) 2020 Kristóf Marussy <kristof@marussy.com>'
__license__ = 'GNU GPLv2'
import unittest
from beancount.loader import load_doc
from beancount.parser import cmptest
class TestClosingBalance(cmptest.TestCase):
@load_doc()
def test_close_account_correct(self, entries, errors, options_map):
'''
plugin "beancount_extras_kris7t.plugins.closing_balance"
2020-01-01 open Assets:Checking
2020-01-01 open Equity:Opening-Balances
2020-01-01 open Equity:Closing-Balances
2020-01-01 * "Opening balances"
Assets:Checking 100 USD
Equity:Opening-Balances -100 USD
2020-03-15 balance Assets:Checking 100 USD
close-to: Equity:Closing-Balances
'''
self.assertEqualEntries('''
plugin "beancount_extras_kris7t.plugins.closing_balance"
2020-01-01 open Assets:Checking
2020-01-01 open Equity:Opening-Balances
2020-01-01 open Equity:Closing-Balances
2020-01-01 * "Opening balances"
Assets:Checking 100 USD
Equity:Opening-Balances -100 USD
2020-03-15 balance Assets:Checking 100 USD
close-to: Equity:Closing-Balances
2020-03-15 * "Closing Assets:Checking"
Assets:Checking -100 USD
closing: TRUE
Equity:Closing-Balances 100 USD
2020-03-15 close Assets:Checking
''', entries)
@load_doc(expect_errors=True)
def test_close_account_incorrect(self, entries, errors, options_map):
'''
plugin "beancount_extras_kris7t.plugins.closing_balance"
2020-01-01 open Assets:Checking
2020-01-01 open Equity:Opening-Balances
2020-01-01 open Equity:Closing-Balances
2020-01-01 * "Opening balances"
Assets:Checking 100 USD
Equity:Opening-Balances -100 USD
2020-03-15 balance Assets:Checking 80 USD
close-to: Equity:Closing-Balances
'''
self.assertEqualEntries('''
plugin "beancount_extras_kris7t.plugins.closing_balance"
2020-01-01 open Assets:Checking
2020-01-01 open Equity:Opening-Balances
2020-01-01 open Equity:Closing-Balances
2020-01-01 * "Opening balances"
Assets:Checking 100 USD
Equity:Opening-Balances -100 USD
2020-03-15 balance Assets:Checking 80 USD
close-to: Equity:Closing-Balances
2020-03-15 * "Closing Assets:Checking"
Assets:Checking -80 USD
closing: TRUE
Equity:Closing-Balances 80 USD
2020-03-15 close Assets:Checking
''', entries)
self.assertRegex(errors[0].message, '^Balance failed for \'Assets:Checking\'')
@load_doc()
def test_close_account_zero(self, entries, errors, options_map):
'''
plugin "beancount_extras_kris7t.plugins.closing_balance"
2020-01-01 open Assets:Checking
2020-03-15 balance Assets:Checking 0 USD
close-to: Equity:Closing-Balances
'''
self.assertEqualEntries('''
plugin "beancount_extras_kris7t.plugins.closing_balance"
2020-01-01 open Assets:Checking
2020-03-15 balance Assets:Checking 0 USD
close-to: Equity:Closing-Balances
2020-03-15 close Assets:Checking
''', entries)
@load_doc(expect_errors=True)
def test_invalid_close_to(self, entries, errors, options_map):
'''
plugin "beancount_extras_kris7t.plugins.closing_balance"
2020-01-01 open Assets:Checking
2020-03-15 balance Assets:Checking 100 USD
close-to: TRUE
'''
self.assertRegex(errors[0].message, '^close-to must be a string')
if __name__ == '__main__':
unittest.main()
|